Redis 知识点整理(三)

目录

Redis 和 Memcached 的区别和共同点

共同点 :

区别 :

缓存设置过期时间

过期的数据的删除策略

Redis 内存淘汰机制


参考:Javaguide 4

Redis Memcached 的区别和共同点

现在公司⼀般都是⽤ Redis 来实现缓存,⽽且 Redis ⾃身也越来越强⼤了!不过,了解 Redis
Memcached 的区别和共同点,有助于我们在做相应的技术选型的时候,能够做到有理有据!

共同点

1. 都是基于内存的数据库,⼀般都⽤来当做缓存使⽤。
2. 都有过期策略。
3. 两者的性能都⾮常⾼。

区别

1. Redis ⽀持更丰富的数据类型 (⽀持更复杂的应⽤场景) Redis 不仅仅⽀持简单的 k/v
型的数据,同时还提供 list set zset hash 等数据结构的存储。 Memcached 只⽀持最简
单的 k/v 数据类型。
2. Redis ⽀持数据的持久化 ,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进
⾏使⽤ , Memecache 把数据全部存在内存之中。
3. Redis 有灾难恢复机制 因为可以把缓存中的数据持久化到磁盘上。
4. Redis 在服务器内存使⽤完之后,可以将不⽤的数据放到磁盘上。但是, Memcached 在服
务器内存使⽤完之后,就会直接报异常。
5. Memcached 没有原⽣的集群模式,需要依靠客户端来实现往集群中分⽚写⼊数据;但是
Redis ⽬前是原⽣⽀持 cluster 模式的 .
6. Memcached 是多线程,⾮阻塞 IO 复⽤的⽹络模型; Redis 使⽤ 单线程的多路 IO 复⽤模
Redis 6.0 引⼊了多线程 IO

 

7. Memcached 过期数据的删除策略只⽤了惰性删除,⽽ Redis 同时使⽤了惰性删除与定期删删除

缓存设置过期时间

注意: Redis 中除了字符串类型有⾃⼰独有设置过期时间的命令 setex 外,其他⽅法都需要依靠
expire 命令来设置过期时间 。另外, persist 命令可以移除⼀个键的过期时间:
过期时间除了有助于缓解内存的消耗,还有什么其他⽤么?
很多时候,我们的业务场景就是需要某个数据只在某⼀时间段内存在,⽐如我们的短信验证码可
能只在 1 分钟内有效,⽤户登录的 token 可能只在 1 天内有效。
如果使⽤传统的数据库来处理的话,⼀般都是⾃⼰判断过期,这样更麻烦并且性能要差很多。

过期的数据的删除策略

1. 惰性删除 :只会在取出 key 的时候才对数据进⾏过期检查。这样对 CPU 最友好,但是可能会
造成太多过期 key 没有被删除。
2. 定期删除 : 每隔⼀段时间抽取⼀批 key 执⾏删除过期 key 操作。并且, Redis 底层会通过限
制删除操作执⾏的时⻓和频率来减少删除操作对 CPU 时间的影响。
定期删除对内存更加友好,惰性删除对 CPU 更加友好。两者各有千秋,所以 Redis 采⽤的是 定期
删除+惰性/懒汉式删除

Redis 内存淘汰机制

Redis 提供 8 种数据淘汰策略
两种LRU 不同是删除数据的集合不同 第一种是已设置过期时间的数据集
第二种是当前的键空间,包含所有的键。
两种LFU的区别和LRU一样。
1. volatile-lru least recently used :从已设置过期时间的数据集( server.db[i].expires
中挑选最近最少使⽤的数据淘汰
2. volatile-ttl :从已设置过期时间的数据集( server.db[i].expires )中挑选将要过期的数据淘汰
3. volatile-random :从已设置过期时间的数据集( server.db[i].expires )中任意选择数据淘汰
4. allkeys-lru(least recently used):当内存不⾜以容纳新写⼊数据时,在键空间中,移除
最近最少使⽤的 key(这个是最常⽤的)
5. allkeys-random :从数据集( server.db[i].dict )中任意选择数据淘汰
6. no-eviction :禁⽌驱逐数据,也就是说当内存不⾜以容纳新写⼊数据时,新写⼊操作会报
错。
7. volatile-lfu least frequently used :从已设置过期时间的数据集 (server.db[i].expires)
挑选最不经常使⽤的数据淘汰
8. allkeys-lfu least frequently used :当内存不⾜以容纳新写⼊数据时,在键空间中,移
除最不经常使⽤的 key
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

trigger333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值