redis list类型使用

List

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

基本命令

阻塞命令 BLPOP list1 100 移除第一个元素,没有则阻塞,直到100ms BRPOP list1 200 移除最后一个元素,没有则阻塞,或者到200ms,返回nil. BRPOPLPUSH msg reciver 500 将msg列表的最后一个元素移除,然后添加到reciver的列表前面,超时时间是500ms

非阻塞命令 LPOP list1 弹出list1中第一个元素,没有元素返回nil. RPOP list1 弹出list1中最后一个元素,没有返回nil

获取列表信息 LLEN list1 获取list1的长度,也就是元素个数。 LRANGE mylist -3 2 获取从倒数第三个元素到正数第三个。

高级使用

既然是列表,通过改进,我们就可以将它转换成消息队列来使用。

消息队列 "消息队列"是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。

对于不同的生产者和消费者,可以通过不同的列表来实现。

通过使用LPUSH来发送消息,通过RPOP来推送消息,因为会产生空轮询,所以可以使用阻塞命令,BLPUSH,BRPOP来阻塞运行。

因为可能会产生消息没有被消费的情况,因此可以采用Rpoplpush命令将推送的消息存入到另一个列表。