list类型
value类型是list时,key中有两个指针 head tail,便于快速访问链表中第一个元素和最后一个元素
list可以描述栈:同向命令 先进后出
也可以描述队列:反向命令 先进先出
lpush RPUSH LPOP RPOP命令:
127.0.0.1:6379> lpush k1 a b c d e f
(integer) 6
127.0.0.1:6379> RPUSH k2 a b c d e f
(integer) 6
127.0.0.1:6379> LPOP k1
“f”
127.0.0.1:6379> LPOP k1
“e”
127.0.0.1:6379> RPOP k1
“a”
未来程序可以不用jdk的api,接入redis即可。
redis有正负索引
LRANGE命令:
127.0.0.1:6379> LRANGE k1 0 -1 //取出k1中的所有值
- “d”
- “c”
- “b”
LINDEX命令
127.0.0.1:6379> FLUSHALL
OK
127.0.0.1:6379> LPUSH k1 a b c d e f
(integer) 6
127.0.0.1:6379> LRANGE k1 0 -1
- “f”
- “e”
- “d”
- “c”
- “b”
- “a”
127.0.0.1:6379> LINDEX k1 2
“d”
127.0.0.1:6379> LINDEX k1 -1
“a”
LSET 命令:
127.0.0.1:6379> LSET k1 3 xxxx //第三个位置设置为3
OK
127.0.0.1:6379> LRANGE k1 0 -1
- “f”
- “e”
- “d”
- “xxxx”
- “b”
- “a”
LREM命令:移除元素
LREM k3 2 a //移除k3对应的value,移除两个a
2是整数,则从左侧开始移除;若为负数,则从右侧开始移除,
LINSERT:插入元素,如下为在元素6的后面插入a,若有两个6时,在第一个6后面追加
如下为在3的前面插入a
LREM命令中k为-2时,是从后面移除两个a:
LLEN:统计元素
BLPOP命令
三个客户端均连接上redis服务器。
第一个客户端:>BLPOP k1 0 //一直阻塞知道k1有值
第二个客户端: >BLPOP k1 0 //一直阻塞知道k1有值
第三个客户端:>BLPOP k1 hello //执行完此命令,发现第一个客户端获取到值 hello
第四个客户端:>BLPOP k1 world //执行完此命令,发现第二个客户端获取到值 world
总结:list可以实现 阻塞 单播队列 先进先出
LTRIM:对两端数据进行删除
LTRIM k1 0 -1 //此命令执行完,未删除任何元素,因为0是第一个元素,-1是最后一个元素。已是最边缘的元素。
LTRIM k1 1 -2 //会删除1之前的元素 -2之后的元素