Redis入门【四】---------列表(List)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Tacks/article/details/82463583

前言

在Redis中,List列表类型是按照顺序排序的字符串列表。类似c语言的普通链表一样,我们可以在链表的头部(左边)或者尾部(右边)添加删除元素。这使得List既可以用作栈,也可以用作队列。一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

【1】PUSH操作

lpush与rpush,lpushx与rpushx

#<1>从队列的左边入队一个或多个元素。
lpush key value [value ...]
#<2>从队列的右边入队一个或多个元素。
rpush key value [value ...]

#<3>将一个值插入到已存在的列表头部(最左边),列表不存在时操作无效。
lpushx key value
#<4>将一个值插入到已存在的列表尾部(最右边),列表不存在时操作无效。
rpushx key value

lpush
返回
当 key 不存在,一个空列表会被创建并执行 lpush操作。 当 key 存在但不是列表类型时,返回一个错误。(error) WRONGTYPE Operation against a key holding the wrong kind of value
如果同时lpush多个值的话,值会依次从左到右lpush从头部进入list。
lpush成功后会列表里面元素的个数。
注意:
其实lpush与rpush就是一对的,一个是从头部,一个是从尾部进行插入。
命令前面的L与R就表示Left(左/头)与Right(右/尾)
lpushx与rpushx插入成功返回元素个数,如果失败返回0
duibi
mingling

【2】POP操作

lpop与rpop,blpop与brpop

#<5>移除并返回列表的第一个元素
lpop key
#<6>移除并返回列表的最后一个元素
rpop key

#<7>删除,并获得该列表中的第一元素,或阻塞,直到有一个可用。
blpop key [key ...] timeout
#<8>删除,并获得该列表中的最后一个元素,或阻塞,直到有一个可用。
brpop key [key ...] timeout

lpop
返回
如果key存在,那么会弹出第一个(头部/最左边)元素,并返回元素的值
如果key不存在,那么会报错(nil)
blpop
这是lpop的阻塞版本。在lpop的时候,如果队列中没有值,则会返回一个nil。而blpop则会等待一段时间,如果list中有值(等待的时候,被添加的),则返回对应值;如果在给定时间内仍没有得到结果,则返回nil。
pop

【3】POP and PUSH操作

#<9>用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回
rpoplpush source destination
#<10>将弹出的元素插入到另外一个列表中并返回,设置阻塞时间
brpoplpush source destination timeout

rpoplpush与brpoplpush
主要作用就是原子性地将源列表中的最后一个元素弹出,然后插入到目标列表,并返回元素
两者的区别就是,后者可以设置阻塞时间
注意
如果源列表和目标列表一样,则就可以弄成循环列表。有多个客户端同时对同一个列表进行旋转(rotating),它们会取得不同的元素,直到列表里所有元素都被访问过,又从头开始这个操作。 有其他客户端在往列表末端加入新的元素。
dui

【4】其他常用命令

#<11>获取列表长度,也就是元素个数
llen key 
#<12>获取列表指定范围内的元素
lrange key start end
#<13>通过索引获取列表中的元素
lindex key index
#<14>通过索引设置列表元素的值
lset key index value
#<15>移除列表元素
lrem key count value

lset,lrem
注意:
lset通过索引来设置元素的值。操作成功返回 ok。
当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误。

lrem根据参数 count 的值,移除列表中与参数 value相等的元素。
count 的值可以是以下几种:
count > 0 : 从表头开始向表尾搜索,移除与 value相等的元素,数量为 count 。
count < 0 : 从表尾开始向表头搜索,移除与 value相等的元素,数量为 count 的绝对值。
count = 0 : 移除表中所有与 value相等的值。
返回:被移除元素的数量。 列表不存在时返回 0 。
other

猜你喜欢

转载自blog.csdn.net/Tacks/article/details/82463583