zoukankan      html  css  js  c++  java
  • redis对象类型及编码

    一、String(字符串)

           底层实现有三种

                 1.REDIS_ENCODING_INT                  使用权正数值实现的字符串对象

                 2.REDIS_ENCODING_EMBSTR         使用embstr编码的简单动态字符串实现的字符串对象

                 3.REDIS_ENCODING_RAW                使用简单字符串实现的字符串对象

           三种底层的编码转换

                  1. REDIS_ENCODING_INT     整数,存储字符串长度小于21且能够转化为整数的字符串

                   2.embstr编码方式和raw编码方式在3.0版本之前是以小于等于39字节为分界的   而在3.2版本之后,则变成了44字节为分界

    二、List列表

           底层实现是两种

                    1.zipList  压缩列表

                    2.linkedList 底层采用双端链表

           编码的转换

                    同时满足一下两个条件 使用zipList

                    1.列表对象保存的所有元素的长度都小于64字节

                    2.列表元素数量小于512个

                    不满足使用LinkedList编码

                     以上两个上限可以修改分别是list-max-ziplist-value,list-max-ziplist-entries

    三、Hash哈希

             底层实现是两种

                    1.zipList  压缩列表

                    2.Hashtable 底层实现字典

              编码的转换

                    同时满足一下两个条件 使用zipList

                    1.哈希对象保存的所有键值对键和值的字符串的长度都小于64字节

                    2.哈希对象键值对数量小于512个

                    不满足使用hashtable编码

                     以上两个上限可以修改分别是hash-max-ziplist-value,hash-max-ziplist-entries

    四、set集合对象

            底层实现是两种

                    1.intset压缩列表

                    2.Hashtable 底层实现字典

              编码的转换

                    同时满足一下两个条件 使用intset

                    1.集合对象保存的所有元素都是整数

                    2.集合元素数量不超过512个

                    不满足使用hashtable编码

                    第二个条件可以修改分别是set-max-intset-entries

    五、zset有序集合

             底层实现是两种

                    1.zipList  压缩列表

                    2.skipList   跳跃表

              编码的转换

                    同时满足一下两个条件 使用zipList

                    1.有序集合保存的元素字符串的长度都小于64字节

                    2.有序集合保存的元素数量小于128个

                    不满足使用skipList编码

                     以上两个上限可以修改分别是zset-max-ziplist-value,zset-max-ziplist-entries

       

             本文摘自《redis设计与实现》 黄健宏 著

  • 相关阅读:
    [mysql]修改 mysql 数据库端口
    [Angular]基础饼图之我如何将鼠标显示内容的数字 " 1" 去掉
    大三总结
    有符号8位整数的冒泡排序
    康托逆展开
    判断计算机是大端还是小端存储方式及分析
    C语言细节——献给入门者(三)
    C语言复杂声明
    病毒篇
    C语言细节——献给初学者(二)
  • 原文地址:https://www.cnblogs.com/weihl/p/13255374.html
Copyright © 2011-2022 走看看