美文网首页
Redis数据库结构与读写原理

Redis数据库结构与读写原理

作者: yijian2595 | 来源:发表于2018-12-07 09:40 被阅读14次

    此文已由作者赵计刚薪授权网易云社区发布。

    欢迎访问网易云社区,了解更多网易技术产品运营经验。

    1、数据库结构


    每一个redis服务器内部的数据结构都是一个redisDb[],该数组的大小可以在redis.conf中配置("database 16",默认为16),而我们所有的缓存操作(set/hset/get等)都是在redisDb[]中的一个redisDb(库)上进行操作,这个redisDb默认是redisDb[0]。

    注意

    • 可以通过"select 1"来选择接下来的操作在redisDb[1]上进行操作

    • 在实际使用中,我们只在redisDb[0]上操作,因为

      • redis没有获取当前是在哪一个redisDb上操作的函数,所以很容易才select多次之后,我们就不知道在哪一个库上了,而且既然是只在redisDb[0]上进行操作,那么"database"就可以设置为1了,

      • 该参数设置为1后,不仅可以将原有的其他redisDb所占的内存给了redisDb[0],在的"定期删除"策略中,我们也只扫描一个redisDb就可以了。

    "定期删除"见 第九章 Redis过期策略

     

    2、读写原理

    在每一个redisDb中都以一个dict(字典)用于存储"key-value"。

    例子:

    假设在redis中执行了如下四条命令并且没有执行任何的select,即默认选择在redisDb[0]上操作

    set msg "hello nana"

    rpush mylist "a" "b" "c"

    hset book name "lover"

    hset book author "nana"

    则存储结构如下:

     

    3、读写时所进行的维护工作

    在读取一个key(读写操作都需要读取key)后,

    • 服务器更新缓存命中次数与不命中次数

    • 更新该key的最后一次使用时间

    • 检测该key是否过期(详细见 第九章 Redis过期策略

    • 写计数器+1,用于持久化

    免费领取验证码、内容安全、短信发送、直播点播体验包及云服务器等套餐

    更多网易技术、产品、运营经验分享请点击

    相关文章:
    【推荐】 分布式存储系统Kudu与HBase的简要分析与对比
    【推荐】 大数据de 2文章

    相关文章

      网友评论

          本文标题:Redis数据库结构与读写原理

          本文链接:https://www.haomeiwen.com/subject/tubzcqtx.html