ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## **1.1 列表** 列表(list)类型是用来存储多个字符串,元素从左到右组成一个有序的集合.列表中的每个字符串被称为元素(element),一个列表最多可以存储(2的32次方)-1个元素.在redis中,可以对列表两端插入(push)和弹出(pop),还可以获取指定范围的元素列表、获取指定所有下标的元素等. 列表类型有两个特点: ①列表中的元素是有序的,这就意味着可以通过索引下标获取某个元素或者某个范围内的元素列表. ②列表中的元素可以是重复的. (1):使用场景 ②消息队列:redis的lpush-brpop命令组合即可实现阻塞队列 ## 1.2 集合 集合(set)类型也是用来保存多个的字符串元素,但和列表不同的是:它的元素是无序且不可重复的,不能通过索引获取元素.如下图,集合user:1:follows中包含着"his"、"it"、"sports"、"music"四个元素,一个集合最多可以存储(2的32次方-1)个元素. ## 1.3 有序集合 有序集合相对于哈希、列表、集合来说会有一点陌生,但既然叫有序集合.那么它和集合必然是有着联系,它保留了集合不能重复元素的特性.但不同的是,有序集合是可排序的.但是他和列表使用索引下标进行排序依据不同的是,它给每个元素设置一个分数(score)作为排序的依据. ![](https://img.kancloud.cn/74/de/74de47a30ef97e58560d82936abc2bd4_746x210.png) ![](https://img.kancloud.cn/75/55/75557f6209099d5431571597416c7705_564x576.png) ##String 字符串 String有三种编码int,embstr,raw 当 value 的值为整型时,编码为 int 当 value 值为字符时,存储的编码为 embstr,连续的内存空间,只需要分配一次 当 value 值字符长度超过 44 时,存储的编码为 raw,不是连续的内存空间,需要分配两次 如果 value 的值为 int 或者 embstr ,然后通过 append 添加字符的时候,也会转化为 raw 类型(因为 embstr 设计的是只读的,如果发生变化只能再开辟一块空间),而且这个过程是不可逆的。 ![](https://img.kancloud.cn/68/89/68896b783bf165c7b8b07527f4f46e13_789x438.png)