zoukankan      html  css  js  c++  java
  • Redis 设计与实现 (一)--数据结构

    底层数据结构:动态字符串、字典、整数集合、双端链表、压缩列表

    字符串对象:

      int    浮点数值

      raw  字符串值>32字节

      embstr   字符串值<32字节

    字符串编码转换:

      int => raw    int追加的值为字符串

      embstr => raw    embstr任何修改

    列表对象:

      ziplist   底层 - 压缩列表

      linkedlist  底层 - 双向链表

    哈希对象:

      ziplist 底层 - 压缩列表

             新加键值对,先将键打入压缩列表的表尾,然后同样方式保存值。

          同一个键值对挨在一起,键值对有先来后到。

        哈希对象所有键值对的字符串长度<64字节

        哈希对象所有键值对数量<512个

      hashtable  底层 - 字典

          字典键和值都是字符串对象。

    集合对象:

      intset  底层 - 整数集合

         集合对象保存的都是整数值

         不超过512个元素

      hashtable 底层 - 字典 

    有序集合对象:

       ziplist  底层 - 压缩列表  按照元素分值排序

          元素长度<64字节

          元素个数<128

       skiplist 底层 -  zset结构(字典+跳跃表) 

    类型检查和命令多态

      操作键:del  explre  rename  type  object

      字符串键:set  get  append  strlen

      哈希键:hdel  hset  hget  hlen

      列表键:rpush  lpop  linsert  llen

         集合键:sadd  spop  sinter  scard 

      有序集合:zadd  zcard  zrank  zscore  

    类型检查: redisObject  type

    多态命令

    内存回收:引用计数

    对象共享:将数据库键的值指针指向现有的值对象。

         共享值引用计数+1

    对象的空转时长:

         lru   对象最后一次被命令访问的时间

         object idletime  空转时间

  • 相关阅读:
    react组件销毁中清理异步操作和取消请求
    只要一行代码,实现五种 CSS 经典布局
    vue中如何安装sass,sass安装命令
    每日总结
    每日总结
    每日总结
    每周总结
    每日总结
    每日总结
    每日总结
  • 原文地址:https://www.cnblogs.com/sunchong/p/8250423.html
Copyright © 2011-2022 走看看