Redis对外暴露的数据类型总结

Redis底层数据结构的实现包含:dict(字典)、sds(简单动态字符串)、intset(整数集合) 、ziplist(压缩列表)、quicklist(快速列表)、skiplist(跳跃表) ,但并没有直接对外暴露使用,而是基于这些底层的数据结构,redis使用API对外只暴露了五种使用的数据类型。各种数据类型大致应用场景和底层实现的数据结构如下:

  • 1、String:最常规的set/get操作,value可以是String也可以是数字。一般做一些复杂的计数功能的缓存。常用命令get、set、自增incr、自减decr、mget等。String底层数据结构实现为简单动态字符串(SDS)。

  • 2、hash:可以用来存储一个对象结构的比较理想的数据类型。一个对象的各个属性,正好对应一个hash结构的各个field。在field比较少,各个value值也比较小的时候,hash采用ziplist来实现;而随着field增多和value值增大,hash可能会变成dict来实现。当hash底层变成dict来实现的时候,它的存储效率就没法跟那些序列化方式相比了。

  • 3、list:可以做简单的消息队列的功能。另外还有一个就是,可以利用lrange范围操作命令,做基于redis的分页功能,性能极佳,用户体验好。Redis对外暴露的list数据类型,它底层实现所依赖的内部数据结构就是quicklist。

  • 4.set:set存放的是一堆不重复值的集合,所以可以做全局去重的功能。intset作为set的底层实现,但当数据量较大或者集合元素为字符串时,redis会使用dict实现set。

  • 5、sorted set:sorted set多了一个权重参数score,集合中的元素能够按score进行排列。可以做排行榜应用,取TOP N操作。sorted set底层实现的数据结构有skiplist、ziplist。

关于Redis底层数据结构的实现原理,请参考另一篇博客:图解Redis内部数据结构实现原理

                                                                                        2020年6月26号  早 于北京记

猜你喜欢

转载自blog.csdn.net/Seky_fei/article/details/106968016