Redis数据库实现方面的使用策略与优缺点分析

一、Redis数据结构

dict:键值对的存储空间
expires:存储某个键的过期时间,值为long long类型的绝对过期时间。

二、过期键删除策略

1.定时删除

策略:Redis设置过期时间时,同时设置一个定时器,到时间删除键。

优点:可以即时删除键值,对内存比较友好。
缺点:存在大量的定时器,对CPU行能不友好

2.惰性删除

策略:对过期的键不去处理,在下一次使用键的时候判断是否过期,若过期则删除。

优点:对CPU性能友好,不需要不断去检索过期时间。
缺点:对内存不友好,存在大量过期键,并有可能键长时间不使用产生过多无效内存。

3.定期删除

策略:规定一个时间,对所有设置了过期时间的键扫描一次,将过期的键删除。时间可以是一小时,一天,一周等等。

优点:折中方式,具备以上两种策略的所有优点。
缺点:折中方式,具备以上两种策略的所有缺点。

三、Redis使用的策略

1.惰性删除

策略:操作key时,检测key过期时间,如过期则删除。

各类操作下的实现:

RDB持久化(持久化数据到磁盘文件):在生成RDB或恢复RDB时,检测Key的过期时间,如果过期则不生成或不恢复。

AOF持久化(持久化Redis操作插入,更新和删除):在AOF写入,恢复时进行惰性删除,如果过期则不记录。

主从复制:主从复制时,主服务器每删除一个Key时会向从服务器发送一条DEL指令,从服务不会自己处理过期键,仅通过主服务发送的DEL键删除键。

2.定期删除

每次在部分数据库中随机选择一部分过期键进行删除,并不会一次删除所有的过期键,避免对大量占用CPU。

四、数据库通知

原理:Redis发布、订阅的一种使用方式,但订阅的是Redis数据库发起的事件。
命令:SUBSCRIBE keyspace@dbid:[key|event]
名词解释:
dbid:数据库实例ID
event:执行的相应命令, 如del, add等
key:订阅的key, 在对key操作时会发送通知

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值