Redis :数据库键空间

因为redis没有返回客户端目标数据库是哪个的命令,不建议使用多数据库

redis中每个数据库用redisDb结构表示。其中redisDb结构的dict字典保存了数据库中所有键值对。也就是键空间。

增删改查都是通过键空间字典进行操作实现的。

 

1 添加新键

将新的键值对添加到键空间字典里面

2 删除键

在键空间删除对应键值对对象

3 更新键

对键空间里面键所对应的值对象进行更新

4 取值

取出制定键的值对象

 

键的过期时间:

过期时间是一个UNIX时间戳

 

1 数据库如何保存键的生存时间和过期时间

在 redisDb结构的 expires字典中保存了数据库中所有键的过期时间,称之为过期字典。

过期字典的键是一个指针,指向键空间中指定键对象。

过期字典值是一个long类型的整数,保存了键所指向的数据库键的过期时间-->毫秒精度的UNIX时间戳

 

键空间中的键与过期字典中的键指向同一键对象,因此不会出现重复对象,节约内存空间。

 

过期键删除策略:

1 定时删除:创建定时任务,在该键过期时间到达时立即执行删除操作。

(对cpu不友好 将过多的cpu时间用于处理过期键而不是客户请求上 影响服务器的 1 响应速度 2 吞吐量

    时间事件:通过无序链表进行实现,查找一个事件的时间复杂度O(N),不能高效处理大量时间事件

2 惰性删除: 键过期后也不主动处理,当有请求访问键空间的该键时,进行检查该键是否已过期。如过期则删除,返回无此键。

(惰性删除会存储大量已经过期的键,造成空间浪费)

3 定时删除:  根据一定策略,每隔一定时间,对数据库检查一次,删除一定的过期键。

(性能考虑,只清除部分过期键)

 

redis 采用2 惰性删除以及3 定时删除,两种方法相结合进行过期键删除。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值