List(列表)
①lpush(左插入)、lrange(查询集合)、rpush(右插入)操作
127.0.0.1:6379> lpush list v1 #新增一个集合
(integer) 1
127.0.0.1:6379> lpush list v2
(integer) 2
127.0.0.1:6379> lpush list v3
(integer) 3
#lrange
127.0.0.1:6379> LRANGE list 0 -1 #查询list的所有元素值
1) "v3"
2) "v2"
3) "v1"
127.0.0.1:6379> lpush list1 v1 v2 v3 v4 v5 #批量添加集合元素
(integer) 5
127.0.0.1:6379> LRANGE list1 0 -1
1) "v5"
2) "v4"
3) "v3"
4) "v2"
5) "v1"
###这里大家有没有注意到,先进去的会到后面,也就是我们的lpush的意思是左插入,l--left
#rpush
127.0.0.1:6379> LRANGE list 0 1 #指定查询列表中的元素,从下标零开始,1结束,两个元素
1) "v3"
2) "v2"
127.0.0.1:6379> LRANGE list 0 0 #指定查询列表中的唯一元素
1) "v3"
127.0.0.1:6379> rpush list rv0 #右插入,跟lpush相反,这里添加进去元素是在尾部!
(integer) 4
127.0.0.1:6379> lrange list 0 -1 #查看集合所有元素
1) "v3"
2) "v2"
3) "v1"
4) "rv0"
##联想:这里我们是不是可以做一个,保存的记录值(如:账号密码的记录),
每次都使用lpush,老的数据永远在后面,我们每次获取 0 0 位置的元素,是不是相当于更新了
数据操作,但是数据记录还在?想要查询记录即可获取集合所有元素!
②lpop(左移除)、rpop(右移除)操作
127.0.0.1:6379> lrange list1 0 -1
1) "v5"
2) "v4"
3) "v3"
4) "v2"
5) "v1"
127.0.0.1:6379> lpop list1 # 从头部删除第一个元素
"v5"
127.0.0.1:6379> lrange list1 0 -1
1) "v4"
2) "v3"
3) "v2"
4) "v1"
127.0.0.1:6379> rpop list1 # 删除最后一个元素
"v1"
127.0.0.1:6379> lrange list1 0 -1
1) "v4"
2) "v3"
3) "v2"
127.0.0.1:6379>
③lindex(查询指定下标元素)、llen(获取集合长度) 操作
127.0.0.1:6379> lrange list1 0 -1
1) "v4"
2) "v3"
3) "v2"
127.0.0.1:6379> lindex list1 1 # 获取下标为1的数据,小标从0开始
"v3"
127.0.0.1:6379> lindex list1 0
"v4"
127.0.0.1:6379> llen list1 # 获取类型为list的key的元素长度
(integer) 3
127.0.0.1:6379>
④lrem(根据value移除指定的值)
127.0.0.1:6379> lrange list1 0 -1
1) "v3"
2) "v3"
3) "v4"
4) "v1"
5) "v5"
6) "v2"
7) "v2"
8) "v2"
9) "v4"
10) "v3"
11) "v2"
127.0.0.1:6379> lrem list1 2 v3 # 移除list中v3元素,移除两个
(integer) 2
127.0.0.1:6379> lrange list1 0 -1
1) "v4"
2) "v1"
3) "v5"
4) "v2"
5) "v2"
6) "v2"
7) "v4"
8) "v3"
9) "v2"
127.0.0.1:6379> lrem key 4 v4 # list中元素中的个数没有命令中的数量,会全部删除返回删除的个数
(integer) 0
127.0.0.1:6379>
⑤ltrim(截取元素)、rpoplpush(移除指定集合中最后一个元素到一个新的集合中)操作
127.0.0.1:6379> lrange list2 0 -1
1) "v4"
2) "v3"
3) "v2"
4) "v1"
127.0.0.1:6379> ltrim list2 0 2 #通过下标截取指定的长度,这个list已经被改变了,只剩下我们所指定截取后的元素
OK
127.0.0.1:6379> lrange list2 0 -1
1) "v4"
2) "v3"
3) "v2"
127.0.0.1:6379> rpoplpush list2 list3 #移除list集合中的最后一个元素到新的集合newlist中,返回值是移除的最后一个元素值
"v2"
127.0.0.1:6379> lrange list3 0 -1
1) "v2"
127.0.0.1:6379>
⑥lset(更新)、linsert操作
127.0.0.1:6379> lrange list2 0 -1
1) "v4"
2) "v3"
127.0.0.1:6379> lset list2 1 v10 # 更新list中索引为1的元素为‘v10’
OK
127.0.0.1:6379> lrange list2 0 -1 # 查看证明操作成功
1) "v4"
2) "v10"
127.0.0.1:6379> lset list4 0 0
(error) ERR no such key
127.0.0.1:6379> lset list2 3 v3 # list不存在会报错
(error) ERR index out of range
127.0.0.1:6379> lrange list2 0 -1 # 索引不存在会报错
1) "v4"
2) "v10"
127.0.0.1:6379> linsert list2 after v10 v11 # 在list中元素为“v10”后面添加元素‘v11’
(integer) 3
127.0.0.1:6379> linsert list2 before v10 v9 # 在list中元素为“v10”前面添加元素‘v9’
(integer) 4
127.0.0.1:6379> lrange list2 0 -1
1) "v4"
2) "v9"
3) "v10"
4) "v11"
127.0.0.1:6379>
⑦ list的原理类似python中list(列表),有索引,有顺序,在两边插入或者改动值,效率最高