Redis 数据库支持多种数据类型,主要有:StringListSetSorted SetHash 等,每种数据类型都有其各自的特点。

一、list 类型

在 redis 中,list 类型的数据是一种类似双向链表的数据结构,所有链表支持的操作在 list 类型的数据上也可以执行。在实际应用中,list 类型通常用来存储列表性质的数据,例如微博中的“关注列表”,或者论坛中的“全部回帖 ID”。此外,使用 list 类型还可以实现消息队列的功能,能够较为明显地减轻后端关系型数据库的访问压力。

二、list 相关命令行命令

lpush key string:向 key 对应的 list 头部添加字符串元素,成功返回1,否则返回0;

rpush key string:向 key 对应的 list 尾部添加字符串元素,成功返回1,否则返回0;

llen key:返回 key 对应的 list 的长度,如果 key 不存在返回0,如果对应的值类型不是 list 则返回错误;

lrange key start end:返回 key 对应的 list 中指定区间中(start~end)的元素,负值表示逆序开始截取,如果 key 不存在,则返回空列表;

ltrim key start end:返回 key 对应的 list 中指定区间中(start~end)的元素,成功返回1,否则返回错误;

lset key index value:设置 key 对应的 list 中索引为 index 的元素值为 value,成功返回1,否则返回错误;

lrem key count value:从 key 对应的 list 的头部(count>0)或者尾部(count

lpop key:从 list 头部删除一个元素并返回删除的元素值;

rpop key:从 list 尾部删除一个元素并返回删除的元素值;

blpop key1...keyN timeout:从左到右依次扫描 key1~keyN,对第一个非空的 list 进行 lpop 操作结果,如果全部 list 都是空或者不存在,阻塞 timeout 秒(timeout 为零表示一直阻塞),阻塞过程中,如果有其他 client 进行 push 操作,则阻塞解除并返回,超时则返回 nil;

brpop key1...keyN timeout:与 blpop 类似,不同的是 blpop 从头部开始删除,而 brpop 从尾部开始删除。