redis基本类型对象编码
2021/5/16 2:25:28
本文主要是介绍redis基本类型对象编码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
字符串对象
对象编码方式有三种:
int: 当值为小的整数值,使用long类型存储
embstr:值为简短的字节数组(同样也是SDS,仅调用一次内存分配函数,分配的连续空间,空间中包含redisObject和sdshdr)
raw:底层采用SDS字符串存储(调用两次内存分配函数,分配给redisObject和sdshdr)
编码变更:
列表对象
对象编码方式有三种:
ziplist:列表中所有字符串元素的长度小于64;元素的数量小于512个,使用ziplist
linkedlist:当ziplist中两个条件有一个不满足时,就会转换为linkedlist。
local:0>rpush blah "hello" "word" "again" "3" local:0>object encoding blah "ziplist" local:0>rpush blah "wwwwwwwwwwwwwwwwwwwwwmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmlocal:0>" "5" local:0>object encoding blah "linkedlist"
哈希对象
编码方式有两种:
ziplist:压缩列表,当哈希对象保存的所有键值对的字符串的长度都小于64字节;键值对的数量小于512个。
hashtable:哈希表编码,当不满足上述条件之一,就会转换为hashtable存储。
local:0>hset studeng name "wang" "1" local:0>object encoding studeng "ziplist" # 键值对的值的长度大于了64字节,转换为hashtable local:0>hset studeng desc "dfijfdoiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiilocal:0>fsooooooooooooooooooooooooooooooooooooooooo" "1" local:0>object encoding studeng "hashtable"
集合对象
集合对象的编码有两种:
intset:整数集合,所有 元素都是整数值;元素数量不超过512个;满足两个条件的话,集合对象将采用整数集合编码存储(两个条件的上限值都可以修改)。
hashtable:哈希表,不满足上述条件,将使用hashtable存储。
local:0>sadd number 1 3 5 76 "4" local:0>object encoding number "intset" local:0>sadd number 'aaa' "1" local:0>object encoding number "hashtable"
有序集合对象
有序集合编码:
ziplist:压缩列表,每个集合元素使用两个紧挨在一起的压缩节点保存,第一个节点为元素的成员,第二个元素为元素的分值。需要满足:元素数量小于128个,元素成员的长度小于64字节
skiplist:跳跃表,按照分值从小到大保存集合元素,zset通常使用字典和跳跃表一起使用,字典负责在O(1)时间内,查看到元素和分数的映射,跳跃表可以进行范围查询。
local:0>eval "for i=1, 128 do redis.call('zadd',KEYS[1], i,i) end" 1 numbers "null" local:0>object encoding numbers "ziplist" local:0>zadd numbers 3.14 pi "1" local:0>object encoding numbers "skiplist" local:0>zcard numbers "129"
这篇关于redis基本类型对象编码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31Tiny RDM:你的下一代Redis桌面GUI神器-icode9专业技术文章分享
- 2024-03-21redisinsight-v2
- 2024-02-26Typed property App\Api\Mapper\GamePropsConfigMapper::$apiRedis must not be accessed before initia-icode9专业技术文章分享
- 2024-02-21redisson getlock
- 2024-02-20redis config
- 2024-02-20redis leaderboard
- 2024-01-23缓存选型:Redis or MemCache
- 2024-01-22面试官:Redis持久化能关吗?怎么关?
- 2024-01-21Redis压测工具redis-benchmark-icode9专业技术文章分享
- 2024-01-19这才是你应该了解的Redis数据结构!