redis学习(五) redis过期时间
redis过期时间1.redis过期时间介绍有时候我们并不希望redis的key一直存在。例如缓存,验证码等数据,我们希望它们能在一定时间内自动的被销毁。redis提供了一些命令,能够让我们对key设置过期时间,并且让key过期之后被自动删除。 2.redis过期时间相关命令1.EXPIRE PEXPIRE? EXPIRE 接口定义:EXPIRE key "seconds"
2.EXPIREAT PEXPIREAT EXPIREAT 接口定义:EXPIREAT key "timestamp"
3.TTL PTTL TTL 接口定义:TTL key
4.PERSIST PERSIST 接口定义:PERSIST key
5.SETEX SETEX 接口定义:SETEX key "seconds" "value"
3.redis如何清理过期keyredis出于性能上的考虑,无法做到对每一个过期的key进行即时的过期监听和删除。但是redis提供了其它的方法来清理过期的key。 1.被动清理当用户主动访问一个过期的key时,redis会将其直接从内存中删除。 2.主动清理 在redis的持久化中,我们知道redis为了保持系统的稳定性,健壮性,会周期性的执行一个函数。在这个过程中,会进行之前已经提到过的自动的持久化操作,同时也会进行内存的主动清理。 3.内存不足时触发主动清理在redis的内存不足时,也会触发主动清理。 4.redis内存不足时的策略redis是一个基于内存的数据库,如果存储的数据量很大,达到了内存限制的最大值,将会出现内存不足的问题。redis允许用户通过配置maxmemory-policy参数,指定redis在内存不足时的解决策略。
1.volatile-lru 使用LRU算法删除一个键(只针对设置了过期时间的key 对于只针对设置了过期时间的键进行删除的策略,在所有的可被删除的键(非永久的键)都被删除时内存依然不足,将会抛出错误。 redis的内存置换算法和操作系统中的内存置换算法类似,就不在这里展开了。 5.redis过期时间总结redis的过期时间还有许多的细节值得去深入了解,例如持久化时对过期时间的处理,redis周期性的常规操作等等,只有这样才能更准确的定位问题,解决问题。 而想进一步的理解这些知识,除了仔细的思考外,最好的办法就是通过阅读源代码,理解redis的底层运行原理。但是这一目标对于现在的我来说难度过大,希望通过不断的学习,将来的我能够做到这一点。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |