• 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设计与实现》 黄健宏 著

  • 相关阅读:
    Unity NGUI 3.0.4版本 制作网络版斗地主
    unity3D与网页的交互---做项目的一点总结
    Cross-platform Tools
    Win7下Qt5的安装及使用
    VS Installer教程
    C++ & MFC
    论文模板的定制
    批处理文件
    MFC六大关键技术
    C/C++常用预处理指令
  • 原文地址:https://www.cnblogs.com/weihl/p/13255374.html
Copyright © 2020-2023  润新知