Redis读写键空间时的维护操作

当redis命令对数据库进行读写时,服务器不仅会对键空间执行指定的读写操作,还会执行一些额外的维护操作

  • 在读取一个键之后(读写都会对键进行读取),服务器会根据键是否存在,来更新服务器的键空间命中(hit)次数或键空间不命中(miss)次数
  • 在读取一个键之后,服务器会更新键的LRU(最后一次访问时间),这个值可以用于计算键的空闲时间
  • 如果服务器发现这个键过期了,会先删除这个过期键,然后才会执行其他操作
  • 如果有客户端使用WATCH命令监视了某个键,那么服务器在对被监视的键进行修改之后,会将这个键标记为脏(dirty),从而让事务程序注意到这个键已经被修改过.
  • 服务器每次修改一个键之后,都会对脏(dirty)键计数器的值增1,这个计数器会触发服务器的持久化及复制操作
  • 如果服务器开启了数据库通知功能,那么在对键进行修改之后,服务器将按配置发送相应的数据库通知。

过期时间

redisDb结构的expires字典保存了数据库中所有键的过期时间,我们称这个字典为过期字典;

  • 过期字典的键是一个指针,这个指正指向键空间中的某个键对象(就是也是 键,跟键空间的键指向同一个;例如键都是 a, 过期字典的键和键空间的键 都是指向 a 这个键对象的,所以不会浪费内存)
  • 过期字典的值是一个 long long类型的整数,这个整数保存了键所指向的数据库键的过期时间---- 一个毫秒精度的unix时间戳

移除过期时间

将过期字典中的键值对移除掉就行了

计算并返回剩余生存时间

计算键的过期时间与当前时间差 就行了

过期键的删除策略

  • 定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作
    优点:对内存最友好,通过定时器能让国企键尽可能快的被删除
    缺点:对CPU时间很不友好,在过期键很多的情况下,删除过期键这一行为可能会占用相当一部分cpu时间,在内存不紧张但是cpu时间紧张的情况下,会对服务器相应时间和吞吐量造成影响

  • 惰性删除: 放任键过期不管,但是每次从键空间中获取键的时候,都检查取到的键是否过期,如果过期就删除;
    优点:对CPU友好
    缺点:对内存最不友好,如果一个键一直不去读取,那么就一直存在不会被删除

  • 定期删除:每隔一点时间,陈旭就对数据库进行一次检查,删除里面的过期键,至于要删除多少过期键,以及要检查多少个删除库,由算法决定;
    定期删除策略难点在于确定删除操作执行的时长和频率,服务器必须根据情况,合理的设置执行时长和频率

Redis的过期删除策略

惰性删除+定期删除组合策略

【Redis】Redis数据库相关推荐

  1. Redis缓存数据库(一)

    缓存数据库介绍 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",泛指非关系型的数据库,随着互联网web2.0网站的兴起,传统的关系数据库在应付we ...

  2. Redis 缓存数据库

    Redis 缓存数据库 第1章 Redis简介: redis是使用C语言编写的开源的,支持网络,基于内存,可持久性的键值对存储数据库,2013年5月之前,Redis是最流行的键值对存储数据库 Redi ...

  3. Redis缓存数据库服务器

    Redis缓存数据库服务器 Redis是一个开源的科技与内存也可持久化的日志型.Key-Value数据库 Redis的存储分为内存存储.磁盘存储和Log文件三部分,配置文件中有三个参数对其进行配置. ...

  4. Redis和数据库 数据同步问题

    Redis和数据库同步问题 缓存充当数据库 比如说Session这种访问非常频繁的数据,就适合采用这种方案:当然了,既然没有涉及到数据库,那么也就不会存在一致性问题: 缓存充当数据库热点缓存 读操作 ...

  5. redis 和 数据库mysql之间的关系

    https://www.zhihu.com/question/20734566 https://www.zhihu.com/question/19660689 http://blog.csdn.net ...

  6. redis和mysql数据不一致_高并发下为什么 redis 和数据库不一致?怎么解决?

    现在的web架构一般都用redis作为缓存层来减轻数据库的压力,数据在此架构下的读取问题,一般都是先判断redis缓存是否有数据,如果有,直接返回,否则读取数据库的数据,写入redis,返回数据,这是 ...

  7. Redis和数据库的结合

    使用 Redis 可以优化性能,但是存在 Redis 的数据和数据库同步的问题,这是我们需要关注的问题.假设两个业务逻辑都是在操作数据库的同一条记录,而 Redis 和数据库不一致. Redis 和数 ...

  8. Redis与数据库同步问题

    缓存数据与持久化数据的一致性,这个问题总结了一下(看到了一个不错的博文),其实就是读和写,还有就是要注意谁先谁后的问题. Redis 是一个高性能的key-value数据库. redis的出现,很大程 ...

  9. Redis与数据库缓存一致性问题

    一.Redis 数据一致性问题产生的原因 对 Redis和数据库的操作有 2 种方案: 1.先操作(删除) Redis,再操作数据库 2.先操作数据库,再操作(删除) Redis 上述二种方案,都希望 ...

  10. redis的数据库通知(notify-keyspace-events)

    redis的数据库通知(notify-keyspace-events) 共分为两类:一类是键空间通知 另一类是键事件通知 概述 数据库通知是redis在2.8之后新增的功能,让客户端可以已发布/订阅模 ...

最新文章

  1. 「AI不惑境」数据压榨有多狠,人工智能就有多成功
  2. C#学习笔记:多态与隐藏,覆盖
  3. Dubbo 高危反序列化漏洞,存在远程代码执行风险,建议及时升级到2.7.7或更高版本!...
  4. c#拼图碎片形状_拼图游戏C#代码
  5. sql数据库和mysql有什么区别_【数据库】MySQL和sql的区别有哪些 - 收获啦
  6. 添加notepad到右键菜单栏
  7. 在CentOs6.5安装jdk
  8. catia钣金根据线段折弯_SolidWorks钣金折弯边角余料处理技巧,钣金工艺设计师都在用...
  9. pdf reference官方指南之-语法基础和文件结构
  10. Kotlin教程,从入门到精通
  11. 项目经理和技术主管的分工
  12. 长期不上班是种怎样的体验?
  13. CAD制图技巧,如何旋转图形?
  14. html图片显示详情,纯CSS鼠标经过图片视差弹出层显示详情链接按钮特效代码.html...
  15. win7局域网自建ftp服务器,win7系统搭建FTp服务器局域网内传输文件的解决教程
  16. 软件测试常用术语总结
  17. sssssssssssssssssssssssssss
  18. SDUT 3929 魔戒
  19. 【君思智慧园区】数字化园区管理系统
  20. 河北师范大学汇华学院计算机类,河北师范大学汇华学院

热门文章

  1. 支付宝赚赏金的多种玩法(引流+变现日入200+)
  2. 基于数据分析,是否自动档汽车比手动挡更耗油
  3. 不必急于吹响裁判哨:“安卓禁令”后华为手机的变数与新机
  4. 计算机的存储单位B KB MB GB TB···
  5. 苹果手机里面彻底删除的照片如何找回来?
  6. 手机中的照片不见了如何恢复
  7. python读取txt数据处理后.csv格式输出
  8. uniapp开发:uniapp之vue3.2开发页面传值的解决方案
  9. 自动化控制重要国际学术会议
  10. Linux下sqlite3移植与编程