1 基本

  redis也许只是用来存放临时数据。比如股市行情、游戏中一个持续一个月的活动等,都属于缓存数据,过了一段就没用了。如果没有过期策略,就会有大量垃圾数据在内存中堆积。

2 TTL

  time to live,键的生存时间/过期时间。客户端可以以s或者ms为单位为db中的key设置过期时间。当经过这个时间后,key的TTL就为0(就是一个计时的时间戳到期)。

  ttl的计算方式为:在db中有一个过期字典,保存了key的指针对象和过期时间戳。

  使用expire命令设置key的ttl为5s,5s后key就过期。

127.0.0.1:6379> get aid
"1"
127.0.0.1:6379> EXPIRE aid 5
(integer) 1
127.0.0.1:6379> get aid
"1"
127.0.0.1:6379> get aid
(nil)

  使用ttl命令显示key的过期时间

127.0.0.1:6379> expire cid 60
(integer) 1
127.0.0.1:6379> ttl cid
(integer) 56

  未设定过期的key的ttl为-1,已经过期的为-2

127.0.0.1:6379> TTL bid
(integer) -2
127.0.0.1:6379> TTL cid
(integer) -1

3 过期键删除策略

  定时删除:主动策略,在key设定ttl时,就设定一个timer,当key过期,就马上删除key。

  惰性删除:被动策略,当key过期时放任不管。下次在键空间中获取key时,发现key过期的话,则删除,没有过期就返回键值。

  定期删除:主动策略,每隔一段时间对db做一次检查,删除里面的过期key。

  定时删除对内存友好,但消耗大量cpu。惰性删除对cpu优化,但会在内存中存留大量垃圾。

  合理的定期删除策略是折中和优秀的,根据业务类型,可以知道key的大概有效时间,然后给出ttl,比如为一个月。然后每个月对key执行定期删除。这样,既保证了cpu不被大量消耗,也保证了内存中不存留大量垃圾。

4 RDB、AOF、复制对过期键的处理

  触发save命令时,过期键不会被保存到磁盘中。服务启动载入RDB文件时(假设rdb功能开启),会对其中的key进行过期检查,过期键不会载入。

  开启aof的情况下,key的过期不会有信息写入aof文件。而当定期删除时,会向aof文件中追加一个delete key的命令。

5 企业中redis对过期的处理方式

4-redis数据过期策略的更多相关文章

  1. 关于Redis数据过期策略

    1.Redis中key的的过期时间 通过EXPIRE key seconds命令来设置数据的过期时间.返回1表明设置成功,返回0表明key不存在或者不能成功设置过期时间.在key上设置了过期时间后ke ...

  2. Redis数据过期策略

    1.Redis中key的的过期时间 通过EXPIRE key seconds命令来设置数据的过期时间.返回1表明设置成功,返回0表明key不存在或者不能成功设置过期时间.在key上设置了过期时间后ke ...

  3. Redis数据过期策略详解

    http://www.cnblogs.com/xuliangxing/p/7151812.html 本文对Redis的过期机制简单的讲解一下 讲解之前我们先抛出一个问题,我们知道很多时候服务器经常会用 ...

  4. Redis学习笔记--Redis数据过期策略详解

    本文对Redis的过期机制简单的讲解一下 讲解之前我们先抛出一个问题,我们知道很多时候服务器经常会用到redis作为缓存,有很多数据都是临时缓存一下,可能用过之后很久都不会再用到了(比如暂存sessi ...

  5. Redis学习笔记--Redis数据过期策略详解==转

    本文对Redis的过期机制简单的讲解一下 讲解之前我们先抛出一个问题,我们知道很多时候服务器经常会用到redis作为缓存,有很多数据都是临时缓存一下,可能用过之后很久都不会再用到了(比如暂存sessi ...

  6. NoSql数据库Redis系列(6)——Redis数据过期策略详解

    本文对Redis的过期机制简单的讲解一下 讲解之前我们先抛出一个问题,我们知道很多时候服务器经常会用到redis作为缓存,有很多数据都是临时缓存一下,可能用过之后很久都不会再用到了(比如暂存sessi ...

  7. redis数据过期策略【转】

    key的过期时间通常,Redis key被创建时不会自动关联过期时间,key将长久存在,除非通过DEL等命令显示的删除.EXPIRE命令簇可以为指定的key关联一个过期时间,代价是一点额外的内存开销. ...

  8. redis 的过期策略都有哪些?内存淘汰机制都有哪些?

    面试题 redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? 面试官心理分析 如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 r ...

  9. redis的过期策略都有哪些?

    1.面试题 redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下LRU代码实现? 2.面试官心里分析 1)老师啊,我往redis里写的数据怎么没了? 之前有同学问过我,说我们生产环境的redi ...

  10. Redis的过期策略和内存淘汰策略(转)

    Redis的过期策略 我们都知道,Redis是key-value数据库,我们可以设置Redis中缓存的key的过期时间.Redis的过期策略就是指当Redis中缓存的key过期了,Redis如何处理. ...

随机推荐

  1. apk程序查找方法调用

    有android killer,现在ida对android的支持等一些方便工具,此篇(关于搜索和修改代码)废弃. 没有好的调试工具下 常用插代码(如果怕影响寄存器值,可以将.locals xxx改多几 ...

  2. java接口的一些想法

    最近一直在闷头往前看<thingking in java> ,但是却由于赶了进度而忘记了初衷.当学到集合的时候,回头却发现,我连最基本的接口都不明白.查了一上午资料,现在明白例如一点点,写 ...

  3. ssh命令、ping命令、traceroute 命令所使用的协议

    在Node reboot or eviction: How to check if yourprivate interconnect CRS can transmit network heartbea ...

  4. openwrt procd

    接着前面写过的一篇关于 procd 的笔记. procd 在 STATE_INIT 时会运行 /etc/inittab 中描述的几个级别指定程序. procd_inittab_run("re ...

  5. Axure Base 02

    (二)Axure rp的线框图元件 l  图片 图片元件拖入编辑区后,可以通过双击选择本地磁盘中的图片,将图片载入到编辑区,axure会自动提示将大图片进行优化,以避免原型文件过大:选择图片时可以选择 ...

  6. luogu2704 炮兵阵地 状态压缩DP

    题目大意:一个N*M的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示),在每一格平原地形上最多可以布置一支炮兵部队,能攻击到的区域:沿横向左右各两格,沿纵向上 ...

  7. jquery.validate ajax验证

    $("#form1").validate({ rules: { ctl00$ContentPlaceHolder1$txtShopName: { remote: { type: & ...

  8. spring核心框架体系结构(各个jar包作用)

    转自:https://blog.csdn.net/sunchen2012/article/details/53939253 弄懂spring就是弄懂spring各个jar包的作用 spring的jar ...

  9. vue弹窗插件实战

    vue做移动端经常碰到弹窗的需求, 这里写一个功能简单的vue弹窗 popup.vue <template> <div class="popup-wrapper" ...

  10. futimens函数的使用【学习笔记】

    #include "apue.h" #include <fcntl.h> int main(int argc,char *argv[]) { int i,fd; str ...