为了账号安全,请及时绑定邮箱和手机立即绑定

Redis的对象类型及其编码方式

标签:
Redis

建议先关注、点赞、收藏后再阅读。

图片描述

Redis的对象类型有以下几种:

1. 字符串类型(string):

存储字符串,通常被用作缓存、计数器等。字符串类型的编码方式有raw、int、embstr和embstr_moved。

  • raw:存储的字符串可以是任意字符。
  • int:将字符串当作整数来存储,当字符串可以被解析为整数时使用。
  • embstr:如果字符串长度小于等于39字节且不包含'\0'字符,则使用这种方式存储。
  • embstr_moved:占位编码,表示该对象所存储的字符串已被迁移到其他地方。

2. 列表类型(list):

由多个字符串组成的有序列表。列表类型的编码方式有ziplist和linkedlist。

  • ziplist:压缩列表,将多个字符串按一定格式连续存储在一起,节省内存。
  • linkedlist:双向链表,每个节点存储一个字符串。

3. 哈希类型(hash):

键值对集合,其中每个键都是唯一的。哈希类型的编码方式有zipmap和hashtable。

  • zipmap:压缩字典,将键值对按一定格式连续存储在一起,兼具压缩和速度优势。
  • hashtable:字典,使用哈希表实现。

4. 集合类型(set):

无序的字符串集合,不允许重复元素。集合类型的编码方式有intset和hashtable。

  • intset:整数集合,当集合中的元素都为整数且个数不超过512时使用。
  • hashtable:字典,使用哈希表实现。

5. 有序集合类型(sorted set):

有序的字符串集合,不允许重复元素,每个元素关联一个分数。有序集合类型的编码方式有ziplist和skiplist。

  • ziplist:压缩列表,将元素和分数按一定格式连续存储在一起。
  • skiplist:跳跃表,同时使用有序链表和多层索引的数据结构。

Redis对象的共享结构和非共享结构如下:

  • 共享结构:
    字符串类型的编码方式为int和embstr时,Redis对象采用共享结构。多个对象可以共享同一个字符串值,以节省内存。当有被引用的字符串被修改时,会进行复制操作。
  • 非共享结构:
    其他类型的对象和字符串类型的编码方式为raw和embstr_moved时,Redis对象采用非共享结构。每个对象都保存自己的值,修改不会影响到其他对象。

以上就是Redis的对象类型及其编码方式,以及Redis对象的共享结构和非共享结构的介绍。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消