Redis 6种淘汰机制,看看你知道哪些?

简介:本文主要介绍redis设置内存淘汰策略、redis各个参数对内存的作用

redis是个基于内存的缓存数据库,既然是基于内存的,那肯定就会有存满的时候

如果真的存满了,再有新的数据过来肯定就存不进去了

此时redis会执行既定的一些淘汰策略,本文大概讲一下redis六种淘汰策略

  1. noeviction(默认策略):对于写请求不再提供服务,直接返回错误(DEL请求和部分特殊请求除外)
  2. allkeys-lru:从所有key中使用LRU算法进行淘汰
  3. volatile-lru:从设置了过期时间的key中使用LRU算法进行淘汰
  4. allkeys-random:从所有key中随机淘汰数据
  5. volatile-random:从设置了过期时间的key中随机淘汰
  6. volatile-ttl:在设置了过期时间的key中,淘汰过期时间剩余最短的

当使用volatile-lru、volatile-random、volatile-ttl这三种策略时,如果没有key可以被淘汰,则和noeviction一样返回错误

如何获取及设置内存淘汰策略

1、获取当前内存淘汰策略:

config get maxmemory-policy

2、获取Redis能使用的最大内存大小

config get maxmemory

如果不设置最大内存大小或者设置最大内存大小为0,在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存。32 位的机器最大只支持 4GB 的内存,而系统本身就需要一定的内存资源来支持运行,所以 32 位机器限制最大 3 GB 的可用内存

 

3、设置淘汰策略

通过命令行修改淘汰策略

config set maxmemory-policy  allkeys-lru

通过命令行修改后,如果服务器重启或者redis重启,淘汰策略回复默认值(noeviction),需要重新设置淘汰策略

如需要永久有效,可以修改redis配置文件(redis.conf)

maxmemory-policy  allkeys-lru

4、设置Redis最大占用内存大小

# 设置Redis最大占用内存大小为100M

config set maxmemory 100mb

 

有遗漏或者不对的可以在我的公众号留言哦

编程经验共享公众号二维码

编程经验共享公众号二维码
更多内容关注公众号
Copyright © 2021 编程经验共享 赣ICP备2021010401号-1