Redis技术探讨

Redis系列之二--适者生存

2020-09-20  本文已影响0人  StreetlampLiu

过期策略:

Redis可以为所有数据结构都设置过期时间,到达过期时间时,数据被自动删除。
由于redis是单线程,频繁处理过期key,有可能造成线上读写指令卡顿。为了解决该问题,redis将设置了过期时间的key单独存放在一个独立的字典中,定时遍历这个字典删除到期的key。

主节点:

1. 从字典中随机选择20个key,
2. 删除20个key中已经过期的key
3. 如果过期key超过1/4, 这重复上诉步骤。

提问:这种方式下可能会有什么问题? 提示如果出现大量key在相同的时间过期,会导致什么问题?

从节点:

从节点不会进行定期扫描,其数据删除是被动方式的。主节点在key到期删除时,会在AOF文件中增加del指令,同步到所有从节点。从节点通过执行该指令删除过期的key。由于同步是异步进行的,所以会出现主从不一致的情况。

数据淘汰:

redis内存超出物理内存时,数据会被落盘,触发大量磁盘读取写入请求,引发redis性能急剧下降。通常情况下,为了避免该情况发生。生产环境会配置maxmemory来限制所使用的内存。
当数据量超过maxmemory时,redis会依照配置的数据淘汰策略进行数据淘汰。redis提供一下几种数据淘汰策略:(通过配置maxmemory-policy属性配置)

生产环境中,如果是最为缓存,应该使用 allkeys-策略。如果是需要使用持久化功能,应该使用volatile-策略。

附录:

上一篇 下一篇

猜你喜欢

热点阅读