首页 > 代码库 > redis主键失效机制

redis主键失效机制

Memcached删除主键的方式与Redis有何异同

首先,Memcached 在删除失效主键时也是采用的消极方法,即 Memcached 内部也不会监视主键是否失效,而是在通过 Get 访问主键时才会检查其是否已经失效。其次,Memcached 与 Redis 在主键失效机制上的最大不同是,Memcached 不会像 Redis 那样真正地去删除失效的主键,而只是简单地将失效主键占用的空间回收。这样当有新的数据写入到系统中时,Memcached 会优先使用那些失效主键的空间。如果失效主键的空间用光了,Memcached 还可以通过 LRU 机制来回收那些长期得不到访问的空间,因此 Memcached 并不需要像 Redis 中那样的周期性删除操作,这也是由 Memcached 使用的内存管理机制决定的。同时,这里需要指出的是 Redis 在出现 OOM 时同样可以通过配置 maxmemory-policy 这个参数来决定是否采用 LRU 机制来回收内存空间

Redis主键失效机制对系统性能的影响

通过以上对 Redis 主键失效机制的介绍,我们知道虽然 Redis 会定期地检查设置了失效时间的主键并删除已经失效的主键,但是通过对每次处理数据库个数的限制、activeExpireCycle 函数在一秒钟内执行次数的限制、分配给 activeExpireCycle 函数CPU时间的限制、继续删除主键的失效主键数百分比的限制,Redis 已经大大降低了主键失效机制对系统整体性能的影响,但是如果在实际应用中出现大量主键在短时间内同时失效的情况还是会使得系统的响应能力降低,所以这种情 况无疑应该避免。

Redis 删除失效主键的方法主要有两种:

消极方法(passive way),在主键被访问时如果发现它已经失效,那么就删除它

积极方法(active way),周期性地从设置了失效时间的主键中选择一部分失效的主键删除

 

http://redis.io/commands/expire
http://redis.io/topics/latency
http://www.cppblog.com/richbirda ... 1/11/29/161184.html
http://www.cnblogs.com/tangtianf ... /05/02/2479315.html

redis主键失效机制