redis(4)——redia数据库
来源:互联网 发布:淘宝二手怎么找不到了 编辑:程序博客网 时间:2024/05/24 05:20
一、redis数据库
1、redis数据库的数据结构
2、切换数据库
默认情况下,redis客户端的目标数据库为0号数据库,但客户端可以通过执行select命令来切换目标数据库
在服务器内部,客户端状态redisClient结构的db属性记录了客户端当前的目标数据库,这个属性是一个指向redisDB结构的指针。
3、数据库键空间
redisDb结构的dict字典保存了数据库中的所有键值对,这个字典称为键空间
键空间的键也就是数据库的键,每个键都是一个字符串对象
键空间的值也就是数据库的值,每个值可以是字符串对象、列表对象、哈希表对象、集合对象和有序集合对象中的任意一种redis对象。
所有针对数据库的操作,比如添加一个键值对到数据库,或者从数据库删除一个键值对,又或者在数据库获取某个键值对等,实际上都是通过对键空间字典进行操作来实现的。
4、数据库操作原理
添加新建set
实际上就是将新建值对添加到键空间字典里面,其中键为字符串对象,值为任意一种类型的redis对象
删除键 del
在键空间里面删除键所对应的键值对对象
更新建 set
对键空间里面键所对应的值对象进行更新,根据值对象的类型不同,更新的具体方法也会有所不同
对键取值 get/lrange
在键空间查找键,找到键之后接着取得该键所对应的字符串对象值,之后再返回值/列表对象所包含的字符串。
清空整个数据库 flushdb:删除键空间所有的键值对
随机返回数据库中的某个键randomkey:通过在键空间中随机返回一个键来实现
返回数据库数量dbsize:返回键空间中包含的键值对的数量。
二、设置键的生存时间或过期时间
1、设置过期键
expire <key> <ttl>命令用于将键key的生存时间设置为ttl秒
pexpire <key> <ttl>命令用于将键key的生存时间设置为ttl毫秒
expireat <key> <timestamp>命令用于将键key的过期时间设置为timestamp所指定的秒数时间戳
pexpireat <key> <timestamp>命令用于将键key的过期时间设置为timestamp所指定的毫秒数时间戳
2、保存过期键
在数据库结构 redisDb 中的expires 字典保存了数据库中所有键的过期时间,这个字典成为过期字典.
过期字典是一个指针,指向键空间的某个键对象
过期字典的值是一个 long long 类型的整数,这个整数保存了键所指向的数据库键的过期时间–一个毫秒级的 UNIX 时间戳
3、移除过期时间
PERSIST 就是 EXPIRE命令的反操作: 在过期字典中查找给定的键,并解除键和值(过期时间)在过期字典中的关联。
4、计算并返回剩余生存时间
TTL 命令以秒为单位返回键的剩余生存时间, PTTL以毫秒为单位返回键的剩余生存时间.
5、过期键的删除策略
- 定时删除:在设置键的过期时间的同时,创建一个定时器,当过期时间到达时,由事件处理器自动执行键的删除操作。
- 惰性删除:放任键过期不管,但是在每次从键空间中获取键值时,都要检查取得的键是否过期,如果过期的话,就删除它,并返回空;如果没过期,就返回键值。
- 定期删除:每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键。
6、Redis 使用的策略
Redis 使用的过期键删除策略是惰性删除加上定期删除, 这两个策略相互配合,可以很好地在合理利用 CPU 时间和节约内存空间之间取得平衡。
- redis(4)——redia数据库
- Redis源码分析(十一)——Redis数据库db
- Nosql数据库——redis(一)
- 初学Redis(2)——用Redis作为Mysql数据库的缓存
- 初学Redis(3)——用Redis作为Mysql数据库的缓存
- 初学Redis(2)——用Redis作为Mysql数据库的缓存
- Redis学习总结(1)——Redis内存数据库详细教程
- 初学Redis(2)——用Redis作为Mysql数据库的缓存
- 初学Redis(2)——用Redis作为Mysql数据库的缓存
- 初学Redis(2)——用Redis作为Mysql数据库的缓存
- 初学Redis(3)——用Redis作为Mysql数据库的缓存
- 初学Redis(2)——用Redis作为Mysql数据库的缓存
- 初学Redis(3)——用Redis作为Mysql数据库的缓存
- 初学Redis(2)——用Redis作为Mysql数据库的缓存
- 初学Redis(2)——用Redis作为Mysql数据库的缓存
- 初学Redis(3)——用Redis作为Mysql数据库的缓存
- 初学Redis(2)——用Redis作为Mysql数据库的缓存
- 初学Redis(2)——用Redis作为Mysql数据库的缓存
- 第一行代码-ListView和RecycleView
- Hackerearth SPECIAL PAIRS DP(SOS).
- P3862数字对
- K
- dubbo配置方式
- redis(4)——redia数据库
- 迁移学习
- const在C和C++中的区别
- java反射:动态加载类
- Sublime Text 2中的快捷键
- 009day(break,continue语句的学习,OJ输入数据的处理)
- 进程间通讯-有名管道
- HTTP会话解释原理及应用
- Spring Boot + Mybatis + Redis二级缓存