028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

Redis实践-创新互联

一、持久化

Redis 的数据 全部存储 在 内存 中,如果 突然宕机,数据就会全部丢失,因此必须有一套机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的 持久化机制,它会将内存中的数据库状态 保存到磁盘 中

创新互联建站长期为上1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为临猗企业提供专业的做网站、网站建设,临猗网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。

AOF(Append Only File - 仅追加文件) 它的工作方式非常简单:每次执行 修改内存 中数据集的写操作时,都会 记录 该操作。假设 AOF 日志记录了自 Redis 实例创建以来 所有的修改性指令序列,那么就可以通过对一个空的 Redis 实例 顺序执行所有的指令,也就是 「重放」,来恢复 Redis 当前实例的内存数据结构的状态

执行流程

是最简单的 Redis 持久性模式。当满足特定条件时,它将生成数据集的时间点快照,例如,如果先前的快照是在2分钟前创建的,并且现在已经至少有 100 次新写入,则将创建一个新的快照。此条件可以由用户配置 Redis 实例来控制,也可以在运行时修改而无需重新启动服务器。快照作为包含整个数据集的单个 .rdb 文件生成,将当前进程中的数据生成快照保存到硬盘中,当redis 重新启动时,可以读取快照文件恢复数据

操作系统多进程 COW(Copy On Write) 机制 拯救了我们。Redis 在持久化时会调用 glibc 的函数 fork 产生一个子进程,简单理解也就是基于当前进程 复制 了一个进程,主进程和子进程会共享内存里面的代码块和数据段

二、淘汰策略

FIFO (First In First Out)先进先出策略,先进去的被淘汰

LRU (Least Recently Used) 最近最久未使用策略,优先淘汰最久未使用的,热点数据

LFU (Latest Frequently Used) 最不经常使用策略,优先淘汰一段时间内使用次数最少的数据

LRU 策略的核心思想:如果一个数据刚刚被访问,那么这个数据肯定是热数据,还会被再次访问

LRU算法即是最近最常使用算法,由于LRU会使用一个链表去维护使用的数据列表,当使用的数据越多,其移动元素时就会越耗时,这不可避免地会影响到Redis主线程。为此Redis对lru算法做了些简化,以减轻淘汰数据对缓存性能的影响

这样Redis不用为所有的数据维护一个大链表,也不用在每次数据访问时都移动链表,提升了缓存的性能

通过该命令可以设置挑选的候选集合数  CONFIG SET maxmemory-samples N

三、过期策略

Redis中同时使用了惰性过期和定期过期两种过期策略

Redis的内存淘汰策略的选取并不会影响过期的key的处理。内存淘汰策略用于处理内存不足时的需要申请额外空间的数据;过期策略用于处理过期的缓存数据

过期键删除策略和内存淘汰机制之间的关系:

四、缓存场景五、高可用

同步策略:你启动一台slave 的时候,他会发送一个psync命令给master ,如果是这个slave第一次socket连接到master,他会触发一个全量复制。master就会启动一个线程,生成RDB快照,还会把新的写请求都缓存在内存中,RDB文件生成后,master会将这个RDB发送给slave的,slave拿到之后做的第一件事情就是写进本地的磁盘,然后加载进内存,然后master会把内存里面缓存的那些新命名都发给slave

其他问题:

优点:

缺点:

主从模式下,当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这种方式并不推荐,实际生产中,我们优先考虑哨兵模式。这种模式下,master 宕机,哨兵会自动选举 master 并将其他的 slave 指向新的 master

在主从模式下,redis 同时提供了哨兵命令redis-sentinel,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵进程向所有的 redis 机器发送命令,等待 Redis 服务器响应,从而监控运行的多个 Redis 实例

哨兵可以有多个,一般为了便于决策选举,使用奇数个哨兵。哨兵可以和 redis 机器部署在一起,也可以部署在其他的机器上。多个哨兵构成一个哨兵集群,哨兵直接也会相互通信,检查哨兵是否正常运行,同时发现 master 宕机哨兵之间会进行决策选举新的 master

哨兵模式的作用

优点:

缺点

Redis集群采用去中心化的思想,没有中心节点的说法,对于客户端来说,整个集群可以看成一个整体,可以连接任意一个节点进行操作,就像操作单一Redis实例一样,不需要任何代理中间件,当客户端操作的key没有分配到该node上时,Redis会返回转向指令,指向正确的node

当我们的存取的 Key 到达的时候,Redis 会根据 crc16 的算法对计算后得出一个结果,然后把结果和 16384 求余 数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作,总槽数为:16384(2^14),如果有3台master,那么每台负责5461个槽(16384/3)

总结:

主从模式:一主多从,读写分离,分担主节点压力,master宕机需要手动选主

哨兵模式:一主多从,哨兵监控主节点状态,投票选主

集群模式:多主多从,可以使数据分区,去中心化,减少单机 压力

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章名称:Redis实践-创新互联
本文URL:http://www.tsicrk.com/article/dccchg.html

其他资讯

让你的专属顾问为你服务

2.0170s