Redis - 数据淘汰策略
2019-07-18 / 2 min read
- volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
- volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
- volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
- allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
- allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
- no-enviction(驱逐):禁止驱逐数据,返回错误
参数设置
Redis中存在一个参数用来设定内存使用上限,这个参数是maxmemory,可以在redis.conf中设置redis内存使用的最大值,当redis使用内存达到最大值时,redis会根据配置文件中的策略选取要删除的key,并删除这些key-value的值。若根据配置的策略,没有符合策略的key,也就是说内存已经容不下新的key-value了,但此时有不能删除key,那么这时候写的话,将会出现写错误。
何时触发内存淘汰
- 客户端发送指令,导致数据的增加时
- redis检测到内存的使用达到上限
- redis自身执行指令时