Redis 数据库结构

结构:

public class RedisDb {
    private int id;         // 数据库号码,用来程序内部选择数据库
    private Dictionary dict;   // 键值数据
    private Dictionary<String, Long> expires;// 过期信息
}

实际上键值数据是字典结构,这里使用HashMap表示

键空间

键空间的操作

  • 字典的基本操作,增删改查
  • 更新命中率
  • 更新lru
  • 删除过期键
  • 事务中对键的修改设置为脏

键的过期

expires保存了键的过期时间,可以使用命令来设置该四件

过期判定
if(existInExpires(key)){
    if(now() > expires.get(key)){
        // 过期
    }
}
过期键删除

有三种方式:

  • 定时删除, 在设置的时候创建定时任务,到时执行删除
    内存友好,费CPU
  • 惰性删除,过期不管,下次访问时删除且返回空
    CPU友好,费内存
  • 定期删除,使用定期任务,来检查是否过期。 折中
    redis使用了后两者相配合。
过期对AOF等的影响
  • 过期键不写入RDB
  • 过期键删除点(惰性或者定期)会写AOF
  • 复制, 主节点会同步删除,从属节点返回已经过期但是不删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值