- 数据结构
- 部署,数据备份/恢复
- reactor 单线程模型
- 分布式锁
- 分布式部署 一致性hash
数据结构
数据类型:
二进制安全的字符串: 任意长度(最大512M不推荐过长),key都是该类型
List 列表,Set 集,SortedSet,Hash,Bit Array(最大2^32位), (HyperLogLogs,Stream)
对与List类型数据,redis会自动创建或(不存在)者自动删除(为空)
数据表示Redis内部用 redisObject表示,主要有数据类型,lru,地址等。
淘汰策略
redis可以设置最大内存使用,超过则触发淘汰机制
maxmemory 0则不做限制,64位系统是0,32位系统是3GB
LRU采取取样的形式进行淘汰
noeviction 不淘汰,内存不够报错
allkeys-lru 所有键按照LRU规则进行淘汰
volatile-lru 设置了超时的键按照LRU规则进行淘汰
allkeys-random: 随机淘汰
volatile-random:设置超时则随机淘汰
volatile-ttl:按照过期时间淘汰
超时处理
redis对设置了超过指定超时时间的key会进行删除,计时方式为存储unix时间戳
删除方式有两种,主动模式(定期抽样)和被动模式(读取时判断)
AOF中的超时删除,主节点会在日志文件中插入DEL命令
主从备份
主从备份下,主节点会向从节点发送同步命令
当主从节点间链接因为网络超时等因素打断时,从节点会进行连接并启动部分同步,同步中断时间段的数据
不能进行部分同步,则进行全量同步
数据同步是异步的,从节点会定期向主节点发送其收到的数据
全量同步:主节点启动后台进程生成RDB文件,并启动一个buffer缓存客户端命令,生成RDB文件后发送给从节点,从节点保存并刷入内存,buffer中的命令也会传给从节点。
部署,数据备份/恢复
RDB 快照
优点:磁盘占用小,快速灾难恢复,高性能(每次生成启动子进程) ,缺点:不能保证数据丢失,启动子进程可能导致极短时间的不可用
AOF 日志
优点: 可靠,损坏风险小 缺点: 文件大,恢复较慢,根据策略,可能会有影响性能(可能频繁进行IO操作)
reactor单线程模型
分布式锁
单实例模式: set key val NX PX timeout, 其中key为资源,val通常为申请锁的客户端id
多实例模式:可用性更高,命令和单实例一致,但是需要获取多个实例中的N/2+1个实例的锁
两种模式都不能有副本,容易出现同步不及时导致的问题
分布式部署/一致性hash
其它:
6版本开始支持TLS