Redis常见数据类型与编码方式
⭐️前言⭐️
本小节围绕Redis中常见的数据类型与编码方式展开。
🍉欢迎点赞 👍 收藏 ⭐留言评论
🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言
🍉博客中涉及源码及博主日常练习代码均已上传GitHub
📍内容导读📍
- 🍅数据类型
- 🍅编码方式
🍅数据类型
在Redis中,最常见的五种数据类型,分别是:string(字符串)、list(列表)、hash(哈希)、set(集合)、zset(有序集合),如图所示:
此处Redis中的各种数据类型,和Java标准库中的数据结构有很多相似之处,字符串类型和Java中的String、哈希类型和Java中的HashMap、列表类型和Java中的List、集合类型和Java中的Set,有序集合相当于是除了存储member之外,还需要存储一个score(权重、分数)
Redis底层在实现上述数据类型的时候,会在源码层面,针对上述实现进行特定的优化,来达到节省时间/节省空间的效果,所以内部具体实现的数据类型,还会有编码方式的变动。
比如Redis承诺,现在有一个hash表,在进行查询、插入、删除操作时,都保证O(1)的时间复杂度,
但是,在这个背后的实现,不一定就是一个标准的hash表,可能在特定场景下,使用别的数据结构实现,但是仍然保证时间复杂度符合承诺
🍅编码方式
实际上Redis针对每种数据结构都有自己的底层内部编码实现,而且是多种实现,这样Redis会在合适的场景选择合适的内部编码,如表所示:
可以看到每种数据结构都有至少两种以上的内部编码实现,例如list数据类型包含了linkedlist和ziplist两种内部编码,Redis会自动根据当前的实际情况选择内部的编码方式,进行自动适应。同时有些内部编码,例如ziplist,可以作为多种数据结构的内部实现,可以通过object encoding命令查询内部编码:
⭐️最后的话⭐️
总结不易,希望uu们不要吝啬你们的👍哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正😁