码上敲享录 > redis数据库常见问题 > redis六种淘汰策略详解

redis六种淘汰策略详解

上一章章节目录下一章 2019-08-20已有101人阅读 评论(0)

redis六种淘汰策略详解


解决方法:

如果redis.conf设置了maxmemory,那redis内存到达这个值得时候就开始执行淘汰策略。如果不设置maxmemory或者设置为0,64位系统不限制内存,32位系统最多使用3GB内存,那么服务器的运行内存不足时才会执行淘汰策略。所以如果redis的应用场景是作为数据库来使用,那不要设置这个选项,因为db是不能容忍丢失数据的,如果作为cache使用,则可以设置这个选项。


redis的6种汰策略:

volatile-lru:从设置了过期时间的数据集中,选择最近最久未使用的数据释放;

allkeys-lru:从数据集中(包括设置过期时间以及未设置过期时间的数据集中),选择最近最久未使用的数据释放;

volatile-random:从设置了过期时间的数据集中,随机选择一个数据进行释放;

allkeys-random:从数据集中(包括了设置过期时间以及未设置过期时间)随机选择一个数据进行入释放;

volatile-ttl:从设置了过期时间的数据集中,选择马上就要过期的数据进行释放操作;

noeviction(默认):不删除任意数据(但redis还会根据引用计数器进行释放),这时如果内存不够时,会直接返回错误。


补充:在Redis中LRU算法是一个近似算法,默认情况下,Redis随机挑选5个键(在配置文件中可以通过maxmemory-samples的值来设置,默认是5,数值越大检查的越多,耗费的时间也就越久),并且从中选取一个最近最久未使用的key进行淘汰。


0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交