redis中设置获取值--列表
列表
一个列表可以包含一个或以上数量的 项(item),每个项按照它们被推入到列表的位置来排列。 每个列表项所处的位置决定了这个项的索引值(index),索引以 0 为开始,从列表的左端到右端依次 递 增,位于列表最左端(表 头)的项的索引为 0 ,而位于列表最右端(表尾)的 项的索引为 N-1 ,其中 N 为 列表的长度。 列表包含的项可以出现重复,它们不必是唯一的。
1,从列表左端推入值 lpush key "one" "two" "three" 返回 列表当前项数量
列表值现状: "three" "two" "one"
2,从列表右端推入值 rpush key "one" "two" "three" 返回 列表当前项数量
列表值现状: "one" "two" "three"
3,从列表左端弹出值 lpop key 弹出最左端的值,并返回被弹出的值
4,从列表右端弹出值 rpop key 弹出最右端的值,并返回被弹出的值
5,获取列表的长度 llen key
6,获取指定索引位置上的项 lindex key index
rpush key "one" "two" "three"
lindex key 1;---返回"two"
lindex key -1;---返回"three"
7,获取指定索引内的值 lrange key start stop
"one" "two" "three" "four" "five" "six"
lrange key 0 2;---返回 "one" "two" "three"
8,设置指定索引上的列表项 lset key index value
"one" "two" "three" "four" "five" "six"
lset key 1 "ten"; ---返回 OK 列表状态"one" "ten" "three" "four" "five" "six"
9,在指定位置插入列表项 linsert key before/after pivot value 返回当前列表长度
"one" "two" "three" "four" "five" "six"
linsert key before "three" "night"; ---返回 7 列表状态"one" "two" "night" "three" "four" "five" "six"
10,从列表中删除指定的值 lrem key count value 返回被移除列表项的数量
根据count值,删除列表内的值
1)count > 0;索引从0开始,删除值是value的项,count个
2)count == 0;删除值是value的所有项
3)count < 0;索引从-1开始,删除值是value的项,abs(count)个
11,修剪列表 ltrim key start stop ,只保留索引范围内的项,其他的删除。俩个索引都可以是整数或负数 返回 OK
12,阻塞弹出命令
blpop key [key...] timeout LPOP 命令的阻塞版本; 命令会以从左到右的顺序,访问给定的各个列 表,并弹出首个非空列表最左端的项; 如果所有给定列表都为空,那么客户端将被阻 塞,直到等待超时,或者有可弹出的项出现为 止; 设置 timeout 参数为 0 表示永远阻塞。
brpop key [key...] timeout RPOP 命令的阻塞版本: 命令会以从左到右的顺序,访问给定的各个列 表,并弹出首个非空列表最右端的项; 如果所有给定列表都为空,那么客户端将被阻 塞,直到等待超时,或者有可弹出的项出现为 止; 设置 timeout 参数为 0 表示永远阻塞。
BLPOP/BRPOP 的先到先服务原则 如果有多个客户端同时因为某个列表而被阻塞,那么当有新 值被推入到这个列表时,服务器会按照先到 先服务(first in first service)原则,优先向最早被阻塞的客户端返回新值。 举个例子,假设列表 lst 为空,那么当客户端 X 执行命令 BLPOP lst timeout 时,客户端 X 将被阻塞。 在此之后,客户端 Y 也执行命令 BLPOP lst timeout ,也因此被阻塞。 如果这时,客户端 Z 执行命令 RPUSH lst "hello" ,将值 "hello" 推入列表 lst ,那么这个 "hello" 将被返回 给客户端 X ,而不是客户端 Y ,因为客户端 X 的被阻塞时间要早于客户端 Y 的被阻塞时间。
本文来自博客园,作者:昊昋,转载请注明原文链接:https://www.cnblogs.com/hbaook-geui/p/15630532.html

浙公网安备 33010602011771号