上一篇: redis学习笔记之-(4)-set(无序不反复汇合)
list无关的命令:
lpush/rpush/lpop/rpop/brpop/blpop
5.1 栈(stack)=lpush+lpop(出入同一端)
lpush+lpop
127.0.0.1:6379> lpush juc synchronized volatile aqs thread(integer) 4127.0.0.1:6379> lpop juc # 最初进入的最先出列"thread"127.0.0.1:6379> lpop juc # 倒数第二个"aqs"127.0.0.1:6379> lpop juc # 倒数第三个"volatile"127.0.0.1:6379>
5.2 队列(queue)=lpush+rpop(出入两端)
lpush+rpop
127.0.0.1:6379> del juc (integer) 1127.0.0.1:6379> lpush juc synchronized volatile aqs thread(integer) 4127.0.0.1:6379> rpop juc # 先进先出"synchronized"127.0.0.1:6379> rpop juc # 先进先出"volatile"127.0.0.1:6379> rpop juc # 先进先出"aqs"127.0.0.1:6379>
5.3 阻塞队列=lpush+brpop(pop阻塞)
lpush+brpop
brpop语法:
brpop key [key...] timout
timeout = 0 示意如果没有数据插入就始终阻塞;
timeout = 5 示意阻塞 5秒 如果工夫到还没有值就返回null;
示例:
127.0.0.1:6379> del juc(integer) 0127.0.0.1:6379> lpush juc synchronized volatile aqs thread # key=juc 入队4个词(integer) 4127.0.0.1:6379> brpop juc 5 # 从 juc中pop一个, 如果没有元素,候时5s1) "juc"2) "synchronized"127.0.0.1:6379> brpop juc 51) "juc"2) "volatile"127.0.0.1:6379> brpop juc 51) "juc"2) "aqs"127.0.0.1:6379> brpop juc 51) "juc"2) "thread"127.0.0.1:6379> brpop juc 5 # 从 juc中pop一个, 如果没有元素,候时5s后没有新push进去的, 返回null(nil)(5.07s)# 此时, 另开一个终端 redis-cli, 执行了: `lpush juc semaphore`127.0.0.1:6379> brpop juc 0 # 从 juc中pop一个, 如果没有元素, 阻塞始终期待1) "juc"2) "semaphore"(15.96s)127.0.0.1:6379>