Redis 内存淘汰机制

来源:互联网 发布:galgame翻译软件 编辑:程序博客网 时间:2024/06/06 02:54

Redis内存淘汰指的是用户存储的一些键被可以被Redis主动地从实例中删除

设置参数是:maxmemory 

1.客户端发起了需要申请更多内存的命令(如set)。

 2.Redis检查内存使用情况,如果已使用的内存大于maxmemory则开始根据用户配置的不同淘汰策略来淘汰内存(key),从而换取一定的内存。

 3.如果上面都没问题,则这个命令执行成功。

maxmemory为0的时候表示我们对Redis的内存使用没有限制。

 Redis提供了下面几种淘汰策略供用户选择,其中默认的策略为noeviction策略:

 · noeviction:当内存使用达到阈值的时候,所有引起申请内存的命令会报错。

 · allkeys-lru:在主键空间中,优先移除最近未使用的key。

 · volatile-lru:在设置了过期时间的键空间中,优先移除最近未使用的key。

 · allkeys-random:在主键空间中,随机移除某个key。

 · volatile-random:在设置了过期时间的键空间中,随机移除某个key。

 · volatile-ttl:在设置了过期时间的键空间中,具有更早过期时间的key优先移除。

主键空间和设置了过期时间的键空间,举个例子,假设我们有一批键存储在Redis中,则有那么一个哈希表用于存储这批键及其值,如果这批键中有一部分设置了过期时间,那么这批键还会被存储到另外一个哈希表中,这个哈希表中的值对应的是键被设置的过期时间。设置了过期时间的键空间为主键空间的子集。
原创粉丝点击