Redis中如何提升访问速度,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
合理的数据编码
Redis 使用对象(redisObject)来表示数据库中的键值,当我们在 Redis 中创建一个键值对时,至少创建两个对象,一个对象是用做键值对的键对象,另一个是键值对的值对象。
typedef struct redisObject{ //类型:包含字符串对象、列表对象、哈希对象、集合对象、有序集合对象。 unsigned type:4; //编码 unsigned encoding:4; //指向底层数据结构的指针 void *ptr; //... }robj;
编码介绍:
1)String:存储数字的话,采用 int 类型的编码,如果是非数字的话,采用 raw 编码;
2)List:List 对象的编码可以是 ziplist 或 linkedlist,字符串长度 < 64 字节且元素个数 < 512 使用 ziplist 编码,否则转化为 linkedlist 编码;
备注:这两个条件是可以修改的,在 redis.conf 中:list-max-ziplist-entries 512list-max-ziplist-value 64
3)Hash:Hash 对象的编码可以是 ziplist 或 hashtable。
当 Hash 对象同时满足以下两个条件时,Hash 对象采用 ziplist 编码,否则就是 hashtable 编码。
1.Hash 对象保存的所有键值对的键和值的字符串长度均小于 64 字节。2. Hash 对象保存的键值对数量小于 512 个。
4)Set:Set 对象的编码可以是 intset 或 hashtable,intset 编码的对象使用整数集合作为底层实现,把所有元素都保存在一个整数集合里面。
保存元素为整数且元素个数小于一定范围使用 intset 编码,任意条件不满足,则使用 hashtable 编码。
5)Zset:Zset 对象的编码可以是 ziplist 或 zkiplist,当采用 ziplist 编码存储时,每个集合元素使用两个紧挨在一起的压缩列表来存储。
Ziplist 压缩列表第一个节点存储元素的成员,第二个节点存储元素的分值,并且按分值大小从小到大有序排列。
当 Zset 对象同时满足一下两个条件时,采用 ziplist 编码,如果不满足以上条件的任意一个,ziplist 就会转化为 zkiplist 编码。
Zset 保存的元素个数小于 128。Zset 元素的成员长度都小于 64 字节。
备注:这两个条件是可以修改的,在 redis.conf 中:zset-max-ziplist-entries 128zset-max-ziplist-value 64
关于Redis中如何提升访问速度问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。