【Redis】Redis数据库
Redis读写键空间时的维护操作
当redis命令对数据库进行读写时,服务器不仅会对键空间执行指定的读写操作,还会执行一些额外的维护操作
- 在读取一个键之后(读写都会对键进行读取),服务器会根据键是否存在,来更新服务器的键空间命中(hit)次数或键空间不命中(miss)次数
- 在读取一个键之后,服务器会更新键的LRU(最后一次访问时间),这个值可以用于计算键的空闲时间
- 如果服务器发现这个键过期了,会先删除这个过期键,然后才会执行其他操作
- 如果有客户端使用WATCH命令监视了某个键,那么服务器在对被监视的键进行修改之后,会将这个键标记为脏(dirty),从而让事务程序注意到这个键已经被修改过.
- 服务器每次修改一个键之后,都会对脏(dirty)键计数器的值增1,这个计数器会触发服务器的持久化及复制操作
- 如果服务器开启了数据库通知功能,那么在对键进行修改之后,服务器将按配置发送相应的数据库通知。
过期时间
redisDb结构的expires字典保存了数据库中所有键的过期时间,我们称这个字典为过期字典;
- 过期字典的键是一个指针,这个指正指向键空间中的某个键对象(就是也是 键,跟键空间的键指向同一个;例如键都是 a, 过期字典的键和键空间的键 都是指向 a 这个键对象的,所以不会浪费内存)
- 过期字典的值是一个 long long类型的整数,这个整数保存了键所指向的数据库键的过期时间---- 一个毫秒精度的unix时间戳
移除过期时间
将过期字典中的键值对移除掉就行了
计算并返回剩余生存时间
计算键的过期时间与当前时间差 就行了
过期键的删除策略
定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作
优点:对内存最友好,通过定时器能让国企键尽可能快的被删除
缺点:对CPU时间很不友好,在过期键很多的情况下,删除过期键这一行为可能会占用相当一部分cpu时间,在内存不紧张但是cpu时间紧张的情况下,会对服务器相应时间和吞吐量造成影响惰性删除: 放任键过期不管,但是每次从键空间中获取键的时候,都检查取到的键是否过期,如果过期就删除;
优点:对CPU友好
缺点:对内存最不友好,如果一个键一直不去读取,那么就一直存在不会被删除定期删除:每隔一点时间,陈旭就对数据库进行一次检查,删除里面的过期键,至于要删除多少过期键,以及要检查多少个删除库,由算法决定;
定期删除策略难点在于确定删除操作执行的时长和频率,服务器必须根据情况,合理的设置执行时长和频率
Redis的过期删除策略
惰性删除+定期删除组合策略
【Redis】Redis数据库相关推荐
- Redis缓存数据库(一)
缓存数据库介绍 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",泛指非关系型的数据库,随着互联网web2.0网站的兴起,传统的关系数据库在应付we ...
- Redis 缓存数据库
Redis 缓存数据库 第1章 Redis简介: redis是使用C语言编写的开源的,支持网络,基于内存,可持久性的键值对存储数据库,2013年5月之前,Redis是最流行的键值对存储数据库 Redi ...
- Redis缓存数据库服务器
Redis缓存数据库服务器 Redis是一个开源的科技与内存也可持久化的日志型.Key-Value数据库 Redis的存储分为内存存储.磁盘存储和Log文件三部分,配置文件中有三个参数对其进行配置. ...
- Redis和数据库 数据同步问题
Redis和数据库同步问题 缓存充当数据库 比如说Session这种访问非常频繁的数据,就适合采用这种方案:当然了,既然没有涉及到数据库,那么也就不会存在一致性问题: 缓存充当数据库热点缓存 读操作 ...
- redis 和 数据库mysql之间的关系
https://www.zhihu.com/question/20734566 https://www.zhihu.com/question/19660689 http://blog.csdn.net ...
- redis和mysql数据不一致_高并发下为什么 redis 和数据库不一致?怎么解决?
现在的web架构一般都用redis作为缓存层来减轻数据库的压力,数据在此架构下的读取问题,一般都是先判断redis缓存是否有数据,如果有,直接返回,否则读取数据库的数据,写入redis,返回数据,这是 ...
- Redis和数据库的结合
使用 Redis 可以优化性能,但是存在 Redis 的数据和数据库同步的问题,这是我们需要关注的问题.假设两个业务逻辑都是在操作数据库的同一条记录,而 Redis 和数据库不一致. Redis 和数 ...
- Redis与数据库同步问题
缓存数据与持久化数据的一致性,这个问题总结了一下(看到了一个不错的博文),其实就是读和写,还有就是要注意谁先谁后的问题. Redis 是一个高性能的key-value数据库. redis的出现,很大程 ...
- Redis与数据库缓存一致性问题
一.Redis 数据一致性问题产生的原因 对 Redis和数据库的操作有 2 种方案: 1.先操作(删除) Redis,再操作数据库 2.先操作数据库,再操作(删除) Redis 上述二种方案,都希望 ...
- redis的数据库通知(notify-keyspace-events)
redis的数据库通知(notify-keyspace-events) 共分为两类:一类是键空间通知 另一类是键事件通知 概述 数据库通知是redis在2.8之后新增的功能,让客户端可以已发布/订阅模 ...
最新文章
- 「AI不惑境」数据压榨有多狠,人工智能就有多成功
- C#学习笔记:多态与隐藏,覆盖
- Dubbo 高危反序列化漏洞,存在远程代码执行风险,建议及时升级到2.7.7或更高版本!...
- c#拼图碎片形状_拼图游戏C#代码
- sql数据库和mysql有什么区别_【数据库】MySQL和sql的区别有哪些 - 收获啦
- 添加notepad到右键菜单栏
- 在CentOs6.5安装jdk
- catia钣金根据线段折弯_SolidWorks钣金折弯边角余料处理技巧,钣金工艺设计师都在用...
- pdf reference官方指南之-语法基础和文件结构
- Kotlin教程,从入门到精通
- 项目经理和技术主管的分工
- 长期不上班是种怎样的体验?
- CAD制图技巧,如何旋转图形?
- html图片显示详情,纯CSS鼠标经过图片视差弹出层显示详情链接按钮特效代码.html...
- win7局域网自建ftp服务器,win7系统搭建FTp服务器局域网内传输文件的解决教程
- 软件测试常用术语总结
- sssssssssssssssssssssssssss
- SDUT 3929 魔戒
- 【君思智慧园区】数字化园区管理系统
- 河北师范大学汇华学院计算机类,河北师范大学汇华学院
热门文章
- 支付宝赚赏金的多种玩法(引流+变现日入200+)
- 基于数据分析,是否自动档汽车比手动挡更耗油
- 不必急于吹响裁判哨:“安卓禁令”后华为手机的变数与新机
- 计算机的存储单位B KB MB GB TB···
- 苹果手机里面彻底删除的照片如何找回来?
- 手机中的照片不见了如何恢复
- python读取txt数据处理后.csv格式输出
- uniapp开发:uniapp之vue3.2开发页面传值的解决方案
- 自动化控制重要国际学术会议
- Linux下sqlite3移植与编程