Redis分布式缓存

Redis是一个高性能的key-value数据库,完全是开源免费的,而且他还是一个NOSQL数据库(非关系型数据库),支持多种数据类型,如:字符串、链表、哈希表、集合等等,为解决高并发、高扩展、大数据储存等一系列数据问题而产生的数据库解决方案。

优点

读写速度快
支持数据永久化到磁盘
丰富的数据结构
保持原子性,支持事务
支持主从机制,读写分离,主机自动把数据同步到从机

应用场景

数据缓存,把一些需要频繁访问的数据,但是短时间内又不会发生变化的,都放入redis中进行操作,提高用户请求的速度以及降低网站负荷,降低数据库读写次数。
常用的实时计算功能,比如统计,把实时变化和展示功能的相关数据放入redis中,提高效率。
消息队列,构建类似于实时聊天的系统功能,提高应用可用性。

Redis复制流程

Redis复制功能基于内存快照(内存储存和备份)的持久化策略基础上,无论持久化策略选择什么,用到了redis复制功能,都一定有内存快照发生。

Redis在slave端和master端流转流程

1.slave端在配置文件添加slave of指令,slave启动时读取配置文件,初始状态为REDIS_REPL_CONNECT。
2.slave端在定时任务servcron中连接master,发送sync指令,然后阻塞等待master发送回内存快照文件。
3.master端接收到sync命令简单判断是否有正在进行的内存快照子进程,没有则立即开始内存快照,有则等待其结束,快照完成后将文件发送给slave端。
4.slave接收到master端发送过来的内存快照文件,保存到本地,接收完成后,清空内存表,重新读取master端发送过来的内存快照文件,重新构建整个内存表数据结构,更新状态为REDIS_REPL_CONNECTED,slave状态流转完成。

Redis复制流程缺陷

slave从库连接master主库时,master会进行内存快照,把整个内存快照文件发送给slave,如果这时候因为网络或者其他原因与master断开了连接,那么当slave重新连接时,需要重新获取整个master的内存快照文件,slave端所有数据都会跟着清除,重建整个内存表,造成的后果是slave恢复时间慢和主库压力的增加。

Redis可扩展集群之主动复制避开redis复制缺陷

采用主动复制来搭建我们的集群环境,主动复制指的是业务端或者通过代理中间件的方式对redis储存进行双写或者多写,通过数据的多份储存来达到与复制的相同目的,还可以解决mysql主从之间的复制延迟问题,通过主动复制,数据多份储存就不用担心reids单点故障发生,一组redis集群挂掉,可以让业务迅速切换到另一组redis上,降低业务风险,缺点是存在数据一致性的问题,因为数据被写入多次,可以通过时间戳或者vector clock等让客户端对多份数据进行校验,保持数据最终一致性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值