搬砖小弟
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,那么这时候写的话,将会出现写错误。

何时触发内存淘汰

  1. 客户端发送指令,导致数据的增加时
  2. redis检测到内存的使用达到上限
  3. redis自身执行指令时