NO.2 Redis基本数据结构之 list列表

list =java中的linkedList,它是个链表不是数组。链表的特点就是插入快,查询慢。
用途:常用于异步队列使用。将需要延后处理的任务序列化为字符串放入redis中,另一个线程从这个队列轮询数据进行处理。

右进左出:队列,rpush , lpop

127.0.0.1:6379> rpush name a b c
(integer) 3
127.0.0.1:6379> llen name # 查看长度
(integer) 3
127.0.0.1:6379> lpop name
"a"
127.0.0.1:6379> lpop name
"b"
127.0.0.1:6379> lpop name
"c"

右进右出:栈 rpush rpop

127.0.0.1:6379> rpush name a b c
(integer) 3
127.0.0.1:6379> rpop name
"c"
127.0.0.1:6379> rpop name
"b"
127.0.0.1:6379> rpop name
"a"

查询 lindex ,ltrim ,lrange ,这几种都是慢查询

lindex 相当于get(index)方法,需要遍历列表,性能随着参数index增大而变差。
ltrim 跟的两个参数start_index和end_index定义了一个区间,在这个区间内的值,ltrim 要保留,区间之外统统砍掉。我们可以通过ltrim来实现一个定长的链表,这一点非常有用。
index 可以为负数,index=-1表示倒数第一个元素,同样index=-2表示倒数第二个元素。

127.0.0.1:6379> rpush name a b c
(integer) 3
127.0.0.1:6379> lindex name 1
"b"
127.0.0.1:6379> lrange name 0 -1 #获取所有元素
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> ltrim name 1 -1 #保留元素
OK
127.0.0.1:6379> lrange name 0 -1 # 查看index =0已经去掉了
1) "b"
2) "c"
127.0.0.1:6379> ltrim name 1 0  # 1-0之间没有长度,等于清空了列表
OK
127.0.0.1:6379> lrange name 0 -1
(empty list or set)

都是一些日常总结,

如果您觉得有帮助的话,记得 评论,关注,转发,收藏,双击么么哒。


你可能感兴趣的:(NO.2 Redis基本数据结构之 list列表)