- ziplist
ziplist编码的列表最大长度为2^16-1个元素,每个元素可以是字符串类型、整数类型或浮点数类型 。在ziplist中,每个元素都被存储为一个字节数组,并包含一个前缀和一个后缀,用于标识该元素的类型和长度 。
- linkedlist
linkedlist适用于存储大数量的列表,它没有像ziplist那样的内存限制,但是会占用更多的内存空间 。
5. Set(集合)使用方式Redis Set(集合)是一个无序的字符串集合,其中每个元素都是唯一的,不允许重复 。Redis Set类型支持的操作包括:

文章插图
使用场景Redis Set类型的使用场景包括:
- 标签系统:使用Set类型存储每个标签对应的对象列表,以便快速查找包含特定标签的对象 。可以使用SADD、SREM、SISMEMBER、SMEMBERS等命令实现 。
- 好友关系:将每个用户的好友列表作为一个集合,可以使用SADD、SREM、SISMEMBER、SDIFF、SINTER、SUNION等命令实现 。
- 共同好友:使用SINTER命令计算出两个用户的共同好友,可以使用SADD、SINTER、SUNION等命令实现 。
- 排名系统:将每个用户的得分作为元素值插入到集合中,使用ZADD、ZREM、ZRANK、ZSCORE等命令进行排名操作,使用ZREVRANGE命令查询排名前几的用户,可以使用ZADD、ZREM、ZRANK、ZSCORE、ZREVRANGE等命令实现 。
- 订阅关系:使用Set类型存储用户订阅的内容,以便快速获取用户订阅的内容 。
内部编码Redis Set类型的内部编码有两种:
- intset(整数集合):当Set类型只包含整数类型的数据,并且元素数量较少(小于512个)时,Redis会使用intset作为Set类型的内部编码 。intset是一种紧凑的、压缩的整数集合结构,可以节省内存空间,并且支持快速的查找、插入和删除操作 。在intset中,所有元素都按照从小到大的顺序排列,并且可以使用不同的编码方式(16位、32位、64位)存储不同大小范围内的整数 。
- hashtable(字典):当Set类型包含字符串类型或者元素数量较多时,Redis会使用hashtable作为Set类型的内部编码 。hashtable是一种基于链表的哈希表结构,可以快速地进行随机访问、插入和删除操作 。在hashtable中,每个元素都被存储为一个字符串,并且使用哈希函数将字符串映射到一个桶中,然后在桶中进行查找、插入和删除操作 。
6. Zset(有序集合)使用方式Redis中的Zset(有序集合)是一个键值对集合,其中每个元素都关联一个分值(score),通过分值进行排序,可以看作是一个字典(dict)和一个跳跃列表(skip list)的混合体,它可以存储多个相同的元素,但每个元素必须有一个唯一的score值 。
推荐阅读
- 抖音深度布局个人小店,巨头加码货架电商
- |把情绪关在门外(深度好文)
- Redis为什么选择单线程?Redis为什么这么快?
- 什么是深基坑(基坑开挖深度从哪里算)
- 图解Redis,谈谈Redis的持久化,RDB快照与AOF日志
- 深度学习不是AI的终极答案
- 适合工作分享的励志故事 有深度的小故事大道理
- 教父2剧情深度解析 教父2影评
- 小学生画画 儿童铅笔画
- 胡先煦|男子假装玩手机记录老婆健身,锻炼10分钟进入深度睡眠:全国统一
