分类归档

服务器教程

服务器知识、操作系统教程、服务器常用软件等

FWQ
服务器教程
Redis如何正确关闭和开启持久化
Redis如何正确关闭和开启持久化 0浏览 收藏 从现在开始,努力学习吧!本文《Redis如何正确关闭和开启持久化》主要讲解了持久化、开启、Redis关闭等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你! 一、关闭持久化 Redis是默认开启RDB的,AOF则是默认关闭的。相当于初始安装的Redis是持久化的。 如何关闭redis持久化?我的需求是只把redis当作缓存来用,所以持久化到硬盘对我的需求来说没有意义。 1、修改redis.conf配置文件 1.1、注释掉原来的持久化规则 # save 3600 1 # save 300 100 # save 60 10000 1.2、设置为空 save "" 1.3、然后重启redis服务即可。 cd到redis根目录 ./src/redis-server redis.conf…
2024-12-01 阅读全文 →
FWQ
服务器教程
linux安装配置及使用redis
linux安装配置及使用redis 0浏览 收藏 怎么入门数据库编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《linux安装配置及使用redis》,涉及到linuxredis,有需要的可以收藏一下  1、下载源码,解压缩后编译源码。 $ wget http://download.redis.io/releases/redis-2.8.3.tar.gz $ tar xzf redis-2.8.3.tar.gz $ cd redis-2.8.3 $ make  2、编译完成后,在Src目录下,有四个可执行文件redis-server、redis-benchmark、redis-cli和redis.conf(conf可能和src在同级目录)。然后拷贝到一个目录下。 mkdir /usr/redis cp redis-server /usr/redis cp redis-benchmark /usr/redis cp redis-cli…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis实现分布式定时任务的方案对比
Redis实现分布式定时任务的方案对比 收藏 偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Redis实现分布式定时任务的方案对比》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步! 随着互联网的快速发展,越来越多的应用需要进行定时任务调度。而对于分布式系统而言,分布式定时任务的实现是一个非常重要的问题。在分布式定时任务的实现过程中,Redis是比较常见的方案之一。本文将针对Redis实现分布式定时任务的方案进行对比分析,以便读者在实际应用中选择最合适的方案。 方案一:使用Zookeeper实现分布式锁 Zookeeper是一个分布式的、开源的分布式应用程序协调服务。使用Zookeeper实现分布式锁的方案可以通过以下步骤实现: 在Zookeeper中创建一个znode节点作为分布式锁。 在节点下创建一个子节点,作为任务的锁标志。 各个节点尝试获取锁,如果获取锁失败,则等待。 获取锁的节点执行任务,执行完毕之后释放锁。 其他节点检查锁是否存在,如果不存在则自己再次尝试获取锁。 这种方案的优点是使用Zookeeper可以实现高可用、高并发的分布式锁,可以确保只有一个节点执行该任务。缺点是需要依赖第三方组件Zookeeper,并且存在锁等待线程阻塞的情况,无法满足高性能的需求。 方案二:Redis分布式锁实现 Redis提供了一个分布式锁的实现方案,可以通过以下步骤使用Redis实现分布式锁: 使用SETNX命令设置一个键值对作为锁,如果返回1则表示获取锁成功,否则表示获取锁失败。 获取锁成功的节点执行任务,任务执行完毕之后使用DEL命令删除锁。 其他节点使用SETNX命令尝试获取锁,如果失败则等待。 Redis分布式锁的优点是可以轻松地部署和使用,而且由于Redis是使用内存存储,所以可以具备较高的性能。缺点是使用Redis实现分布式锁需要自行处理锁的过期时间和高并发情况下的性能问题。 方案三:使用Redis的Sorted Set实现分布式定时任务 Redis的采用Sorted Set实现分布式定时任务,可以通过以下步骤实现: 将定时任务的执行时间作为Score,任务的ID作为一个Field,将任务加入到Redis的Sorted Set中。 每个节点定时轮询Sorted Set,如果当前时间大于等于某个任务的执行时间,则获取该任务并尝试获取锁。 获取锁成功的节点执行任务,执行完毕之后从Sorted Set中删除该任务。…
2024-12-01 阅读全文 →
FWQ
服务器教程
centos7.8怎么安装redis5.0.10
centos7.8怎么安装redis5.0.10 0浏览 收藏 golang学习网今天将给大家带来《centos7.8怎么安装redis5.0.10》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习数据库或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家! 准备 centos7.8服务器一台 修改主机名 # hostnamectl set-hostname redishost 安装redis 下载redis安装包 # cd /opt # wget https://download.redis.io/releases/redis-5.0.10.tar.gz  解压压缩包 # cd /opt # tar -zxf redis-5.0.10.tar.gz  编译安装 # cd /opt # cd redis-5.0.10 ## 安装gcc编译器 # yum install gcc # make MALLOC=libc # # make install cd src && make install make[1]: Entering directory `/opt/redis-5.0.10/src' Hint: It's a good idea to run 'make test' ;)     INSTALL install     INSTALL install     INSTALL install…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis使用元素删除的布隆过滤器来解决缓存穿透问题
Redis使用元素删除的布隆过滤器来解决缓存穿透问题 0浏览 收藏 亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《Redis使用元素删除的布隆过滤器来解决缓存穿透问题》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下布隆过滤器、Redis缓存穿透,希望所有认真读完的童鞋们,都有实质性的提高。 缓存雪崩 缓存雪崩指的是Redis当中的大量缓存在同一时间全部失效,而假如恰巧这一段时间同时又有大量请求被发起,那么就会造成请求直接访问到数据库,可能会把数据库冲垮。 缓存雪崩一般形容的是缓存中没有而数据库中有的数据,而因为时间到期导致请求直达数据库。 解决方案 解决缓存雪崩的方法有很多: 1、加锁,保证单线程访问缓存。这样就不会有很多请求同时访问到数据库。 2、失效时间不要设置成一样。典型的就是初始化预热数据的时候,将数据存入缓存时可以采用随机时间来确保不会咋同一时间有大量缓存失效。 3、内存允许的情况下,可以将缓存设置为永不失效。 缓存击穿 缓存击穿和缓存雪崩很类似,区别就是缓存击穿一般指的是单个缓存失效,而同一时间又有很大的并发请求需要访问这个key,从而造成了数据库的压力。 解决方案 解决缓存击穿的方法和解决缓存雪崩的方法很类似: 1、加锁,保证单线程访问缓存。这样第一个请求到达数据库后就会重新写入缓存,后续的请求就可以直接读取缓存。2、内存允许的情况下,可以将缓存设置为永不失效。  缓存穿透 缓存穿透和上面两种现象的本质区别就是这时候访问的数据其在数据库中也不存在,那么既然数据库不存在,所以缓存里面肯定也不会存在,这样如果并发过大就会造成数据源源不断的到达数据库,给数据库造成极大压力。 解决方案 对于缓存穿透问题,加锁并不能起到很好地效果,因为本身key就是不存在,所以即使控制了线程的访问数,但是请求还是会源源不断的到达数据库。 解决缓存穿透问题一般可以采用以下方案配合使用: 1、接口层进行校验,发现非法的key直接返回。比如数据库中采用的是自增id,那么如果来了一个非整型的id或者负数id可以直接返回,或者说如果采用的是32位uuid,那么发现id长度不等于32位也可以直接返回。 2、将不存在的数据也进行缓存,可以直接缓存一个空或者其他约定好的无效value。采用这种方案最好将key设置一个短期失效时间,否则大量不存在的key被存储到Redis中,也会占用大量内存。 布隆过滤器(Bloom Filter) 针对上面缓存穿透的解决方案,我们思考一下:假如一个key可以绕过第1种方法的校验,而此时有大量的不存在key被访问(如1亿个或者10亿个),那么这时候全部存储到缓存,会占用非常大的空间,会浪费大量服务器内存,导致内存不足。 那么有没有一种更好的解决方案呢?这就是我们接下来要介绍的布隆过滤器,布隆过滤器就可以最大程度的解决key值过多的这个问题。…
2024-12-01 阅读全文 →
FWQ
服务器教程
redis实现sentinel哨兵架构的方法
redis实现sentinel哨兵架构的方法 0浏览 收藏 对于一个数据库开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《redis实现sentinel哨兵架构的方法》,主要介绍了架构、Redis哨兵,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了! 1、redis哨兵(Sentinel) 1.1、redis集群介绍 前面文章讲的主从复制集群是无法实现master和slave角色的自动切换的,如果master节点出现现redis服务异常、主机断电、磁盘损坏等问题导致master无法使用,而redis主从复制无法实现自动的故障转移(将slave 自动提升为新master),需要手动修改环境配置,才能切换到slave redis服务器,另外当单台Redis服务器性能无法满足业务写入需求的时候,也无法横向扩展Redis服务的并行写入性能。需要解决以上的两个核心问题: master和slave角色的无缝切换,让业务无感知从而不影响业务使用; 可横向动态扩展Redis服务器,从而实现多台服务器并行写入以实现更高并发的目的。 Redis集群实现的方式: 客户端分片: 由应用决定将不同的KEY发送到不同的Redis服务器 代理分片: 由代理决定将不同的KEY发送到不同的Redis服务器,代理程序如:codis,twemproxy等 Redis Cluster 1.2、redis哨兵(Sentinel)的工作原理 Sentinel可以管理多个redis主从集群 Sentinel 进程是用于监控redis集群中Master主服务器工作的状态,在Master主服务器发生故障的时候,可以实现Master和Slave服务器的切换,保证系统的高可用,此功能在redis2.6+的版本已引用,Redis的哨兵模式到了2.8版本之后就稳定了下来。一般在生产环境也建议使用Redis的2.8版本的以后版本 哨兵(Sentinel) 是一个分布式系统,可以在一个架构中运行多个哨兵(sentinel) 进程,这些进程使用流言协议(gossip protocols)来接收关于Master主服务器是否下线的信息,并使用投票协议(Agreement Protocols)来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master 每个哨兵(Sentinel)进程会向其它哨兵(Sentinel)、Master、Slave定时发送消息,以确认对方是否”活”着,如果发现对方在指定配置时间(此项可配置)内未得到回应,则暂时认为对方已离线,也就是所谓的”主观认为宕机”…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis 的 GeoHash详解
Redis 的 GeoHash详解 0浏览 收藏 来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习数据库相关编程知识。下面本篇文章就来带大家聊聊《Redis 的 GeoHash详解》,介绍一下RedisGeoHash,希望对大家的知识积累有所帮助,助力实战开发! Redis 在 3.2 版本以后增加了地理位置 GEO 模块,意味着我们可以使用 Redis 来实现摩拜单车「附近的 Mobike」、美团和饿了么「附近的餐馆」这样的功能了。 用数据库来算附近的人 地图元素的位置数据使用二维的经纬度表示,经度范围 (-180, 180],纬度范围 (-90, 90],纬度正负以赤道为界,北正南负,经度正负以本初子午线 (英国格林尼治天文台) 为界,东正西负。比如掘金办公室在望京 SOHO,它的经纬度坐标是 (116.48105,39.996794),都是正数,因为中国位于东北半球。 当两个元素的距离不是很远时,可以直接使用勾股定理就能算得元素之间的距离。我们平时使用的「附近的人」的功能,元素距离都不是很大,勾股定理算距离足矣。不过需要注意的是,经纬度坐标的密度不一样…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis实现消息队列的方法与应用实例
Redis实现消息队列的方法与应用实例 收藏 数据库不知道大家是否熟悉?今天我将给大家介绍《Redis实现消息队列的方法与应用实例》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步! 随着互联网的快速发展,消息队列不仅在企业级应用中得到广泛应用,也在小型项目和个人开发中逐渐流行起来。Redis作为一款高性能、内存数据库,也提供了可靠、灵活的消息队列解决方案。本文将介绍Redis如何实现消息队列,以及应用实例。 一、Redis消息队列的实现方法 Redis List Redis List是一种基于链表实现的数据结构,是Redis消息队列的核心部分。可以使用LPUSH和RPUSH命令将元素添加到队列中,使用LPOP和RPOP命令将元素从队列中取出。此外,还可以使用LRANGE命令获取队列中的所有元素,支持阻塞和非阻塞两种模式。 Redis List不仅可以实现队列,还可以实现栈和双向队列。当然,也可以组合使用各种List命令实现自定义的数据结构。 Redis Pub/Sub Redis Pub/Sub是一种基于信息订阅与发布模式实现的消息队列。它可以通过PUBSUB命令进行管理。使用PUBLISH命令将消息发送到指定的频道,使用SUBSCRIBE命令订阅指定的频道。 Redis Pub/Sub不仅可以用于实现消息队列,还可以用于实现实时通信和事件驱动模型等。 Redis Lua脚本 Redis支持用Lua脚本编写自定义命令,这可以用来实现更复杂的消息队列方案。例如,可以将多个List和Pub/Sub命令组合在一起,实现自己的消息队列逻辑。 Redis Lua脚本还支持使用Redis的事务处理功能,可以确保消息队列操作的原子性。 二、Redis消息队列的应用实例 订单处理 订单处理是一个非常适合使用Redis消息队列的场景。当有用户下单时,需要将订单信息添加到队列中。订单队列可以实现一些基础功能,如订单状态的更改、订单处理的逻辑等。 在高并发的情况下,消息队列可以确保订单信息被逐一处理,避免重复处理和丢失订单信息。同时,可以通过监控工具对订单处理进程进行实时监控,保证系统的稳定性。 通知系统 通知系统是另一个适合使用Redis消息队列的场景。例如,在用户注册后,需要向用户发送一封欢迎邮件,同时也需要向管理员发送一封通知邮件。…
2024-12-01 阅读全文 →
FWQ
服务器教程
面试分析分布式架构Redis热点key大Value解决方案
面试分析分布式架构Redis热点key大Value解决方案 0浏览 收藏 本篇文章给大家分享《面试分析分布式架构Redis热点key大Value解决方案》,覆盖了数据库的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。 引言 关于 Redis 热点数据 & 大 key 大 value 问题也是容易被问的高阶问题,不如一次痛快点说完,让面试官无话可说,个人工作经验中,热点数据问题在工作中相比雪崩更容易遇到,只是大部分时候热点不够热,都会被提前告警解决,但这个问题一旦控制不了造成的线上问题也是足够让你今年绩效垫底了,废话不说进入正题。 正常情况下,Redis 集群中数据都是均匀分配到每个节点,请求也会均匀的分布到每个分片上,但在一些特殊场景中,比如外部爬虫、攻击、热点商品等,最典型的就是明星在微博上宣布离婚,吃瓜群众纷纷涌入留言,导致微博评论功能崩溃,这种短时间内某些 key 访问量过于大,对于这种相同的 key 会请求到同一台数据分片上,导致该分片负载较高成为瓶颈问题,导致雪崩等一系列问题。 1、面试官:你在项目中有没有遇到 Redis 热点数据问题,一般都是什么原因引起的? 问题分析:上次听群里大佬面试阿里 p7 就被问到这个问题,难度指数五颗星,对我等小白着实是加分项。 答:关于热点数据问题我有话要说,这个问题我早在刚刚学习使用…
2024-12-01 阅读全文 →
FWQ
服务器教程
聊聊Memcache转Redis有关缓存的“坑”
聊聊Memcache转Redis有关缓存的“坑” 0浏览 收藏 在数据库实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《聊聊Memcache转Redis有关缓存的“坑”》,聊聊Redis、缓存、Memcache,希望可以帮助到正在努力赚钱的你。 【golang学习网.com原创稿件】在高并发场景下,很多人都把 Cache(高速缓冲存储器)当做可以“续命”的灵丹妙药,哪里高并发压力大,哪里就上传 Cache 来解决并发问题。 但有时候,即使使用了 Cache,却发现系统依然卡顿宕机,是因为 Cache 技术不好吗?非也,其实这是缓存的治理工作没有做好。 2018 年 5 月 18-19 日,由 golang学习网 主办的全球软件与运维技术峰会在北京召开。 在 19 日下午“高并发与实时处理”分会场,同程艺龙机票事业群 CTO 王晓波带来了《高并发场景的缓存治理》的主题演讲。 他针对如何让缓存更适合高并发使用、如何正确使用缓存、如何通过治理化解缓存问题等热点展开了阐述。 对于我们来说,我们是 OTA…
2024-12-01 阅读全文 →