#=====================================
# lpush :将一个或多个值插入列表头(左)
# rpush :将一个或多个值插入列表尾(右)
# lrange :以偏移量返回列表中指定范围内的元素 start和end指定
# 其中0 表示类别的第一个元素 1表示列表的第二个元素 以此类推
# 也可以用负数下标 以-1 表示列表的最后一个元素 -2 表示列表倒数第二个元素 以此类推
#=====================================
127.0.0.1:6379> lpush list one (integer) 1 127.0.0.1:6379> lpush list two (integer) 2 127.0.0.1:6379> lpush list three (integer) 3 127.0.0.1:6379> lrange list 0 -1 1) "three" 2) "two" 3) "one" 127.0.0.1:6379> lrange list 0 1 1) "three" 2) "two" 127.0.0.1:6379>
#=====================================
# lpop:命令用于删除和返回列表的第一个元素。key不存在时 返回nil
# rpop:删除列表的最后一个元素,返回值为删除元素
#=====================================
127.0.0.1:6379> rpush list right (integer) 3 127.0.0.1:6379> lpop list "two" 127.0.0.1:6379> rpop list "right" 127.0.0.1:6379> lrange list 0 -1 1) "one"
#=====================================
# lindex:根据索引下标获得元素(-1代表最后一个 0代表第一个)
#=====================================
127.0.0.1:6379> lindex list 1 (nil) 127.0.0.1:6379> lindex list 0 "one" 127.0.0.1:6379> lindex list -1 "one"
#=====================================
# llen:返回列表的长度
#=====================================
127.0.0.1:6379> flushdb OK 127.0.0.1:6379> lpush list one (integer) 1 127.0.0.1:6379> lpush list two (integer) 2 127.0.0.1:6379> lpush list three (integer) 3 127.0.0.1:6379> llen list #返回列表长度 (integer) 3
#=====================================
# lrem key :根据参数 count的值 移除列表中与参数value相等的元素
#=====================================
127.0.0.1:6379> lrem list 1 two (integer) 1 127.0.0.1:6379> lrange list 0 -1 1) "three" 2) "one"
#=====================================
# ltrimkey :修剪列表(trim)也就是说,列表只保留指定范围内的元素,不在指定范围内的元素将被删除
#=====================================
127.0.0.1:6379> rpush mylist wyt (integer) 1 127.0.0.1:6379> rpush mylist lmp (integer) 2 127.0.0.1:6379> rpush mylist hyd (integer) 3 127.0.0.1:6379> rpush mylist yjy (integer) 4 127.0.0.1:6379> ltrim mylist 1 2 OK 127.0.0.1:6379> lrange mylist 0 -1 1) "lmp" 2) "hyd"
#=====================================
# rpoplpush:删除列表的最后一个元素,并将该元素添加到另一个列表中并返回
#=====================================
127.0.0.1:6379> rpush list hello (integer) 1 127.0.0.1:6379> rpush list foo (integer) 2 127.0.0.1:6379> rpush list bar (integer) 3 127.0.0.1:6379> rpoplpush list myotherlist "bar" 127.0.0.1:6379> lrange list 0 -1 1) "hello" 2) "foo" 127.0.0.1:6379> lrange myotherlist 0 -1 1) "bar"
#====================================
# lset key index value :将列表 可以 下标为index的元素的值设置为value
#=====================================
127.0.0.1:6379> exists list #对空列表进行lset (integer) 0 127.0.0.1:6379> lset list 0 item #报错 (error) ERR no such key 127.0.0.1:6379> lpush list one #对非空列表进行 lset (integer) 1 127.0.0.1:6379> lrange list 0 -1 1) "one" 127.0.0.1:6379> lset list 0 new #更新值 OK 127.0.0.1:6379> lrange list 0 0 1) "new" 127.0.0.1:6379> lset list 1 new #index超出范围报错 (error) ERR index out of range
# ===================================================
# linsert key before/after pivot value
用于在列表的元素前或者后插入元素。
#
将值
value
插入到列表
key
当中,位于值
pivot
之前或之后。
# ===================================================
list
就是链表,略有数据结构知识的人都应该能理解其结构。使用
Lists
结构,我们可以轻松地实现最新消息排行等功能。List
的另一个应用就是消息队列,可以利用
List
的
PUSH
操作,将任务存在
List
中,然后工 作线程再用POP
操作将任务取出进行执行。
Redis
还提供了操作
List
中某一段的
api
,你可以直接查询,删 除List
中某一段的元素。
Redis
的
list
是每个子元素都是
String
类型的双向链表,可以通过
push
和
pop
操作从列表的头部或者尾部 添加或者删除元素,这样List
即可以作为栈,也可以作为队列。