rpoplpush使用场景
常用命令
list常用命令
list存储
存储list:
ArrayList 使用数组方式
LinkedList 使用双向链表方式
存储list常用命令:两端添加、两端弹出、扩展命令、查看列表、获取列表元素个数
两端添加:lpush (listname) (value1) (value2) (value3)... -> 往列表左边按顺序插入值、
rpush (listname) (value1) (value2) (value3)... -> 往列表右边按顺序插入值、
lpushx (listname) (value1) (value2) (value3)... -> 若存在list,则往列表左边按顺序插入值、
rpushx (listname) (value1) (value2) (value3)... -> 若存在list,则往列表右边按顺序插入值、
查看列表:lrange (listname) (begin) (end) -> 查看list,从begin序号到end序号开始,0以及正数为顺序,负数为倒序
弹出:lpop (listname) -> 弹出list的首个元素、rpop (listname) -> 弹出list的最后一个元素
获取列表元素个数:llen (listname) -> 获取list的元素个数
删除:
lrem (listname) (count) (value) -> 从list中删除count个值为value元素,若count为正数,则是从头部顺序开始,相反则是从尾部开始删除,若count为0,则代表删除所有的值为value元素、
插入:lset (listname) (index) (value) -> 在list的角标[index]插入value、
linsert (listname) before[after] (value1) (value2) -> 在list中在value1元素前(后)插入value2、
rpoplpush (list1) (list2) -> 从list1弹出元素再压入list2
rpoplpush使用场景
rpoplpush用于数据的交互,从mylist5右边弹出个数值,插入到mylist6
1、在某个下标插入(替换)元素
2、linsert before/after在某个元素之前/之后插入数字
1、lpushx左边插入、rpushx右边插入
2、lrem mylist3 2 3,从左边(首)删除2个3,
lrem mylist3 -2 1,从右边(尾)删除2个1,
3、lrem mylist3 0 2,删除所有的2
1、lpush mylist a b c从左侧开始向list插入数据,
2、rpush 从右侧开始插入数据
3、lrange 查询list+排序
4、lpop左(首)边弹出、rpop右(尾)边弹出
5、llen获取list长度
存储list常用命令
RPOPLPUSH 的使用场景
6.消费者程序
提供守护线程 rpoplpush
5.存储list常用命令:
存储list
ArrayList使用数组方式
LinkedList使用双向链接方式
4.、
rpoplpush的使用场景:
redis链表经常用于消息队列的服务,完成多个消息之间的交互,假设一个应用程序正在执行lpush,向链表中添加新的元素,我们将这样的程序称为生产者,另一个程序在执行rpop操作,从列表中取出元素,称之为消费者,与此同时,消费者程序,在取出元素后立刻崩溃,由于该消息被取出,没处理,那认为消息已经丢失了,由此可能导致业务数据的丢失,或者业务状态的不一致,可以通过rpoplpush命令,消费者程序在消费队列中取出元素之后再将它插入到一个备份的队列中,直到消费者程序完成正常的逻辑处理后,再将消费从备份队列中删除,这样可以提供一个守护的线程。当发现备份队列中的消息过期的时候,可以将他重新放回主消息的队列当中,以便其他的消费者可以继续去处理。
存储list的常用命令:
两端添加,查看列表,两端弹出,获取列表元素个数
Redis的数据结构
存储list
ArrayList使用数组方式
LinkedList使用双向链接方式
Redis 的数据结构
rpoplpush 使用场景
扩展命令
172.17.0.2:6379> lpushx mylist x (integer) 6 172.17.0.2:6379> lrange mylist 0 -1 1) "x" 2) "2" 3) "1" 4) "c" 5) "b" 6) "a" 172.17.0.2:6379> lpushx mylist3 x (integer) 0 172.17.0.2:6379> rpushx mylist2 y (integer) 6 172.17.0.2:6379> lrange mylist2 0 -1 1) "a" 2) "b" 3) "c" 4) "1" 5) "2" 6) "y"
172.17.0.2:6379> lpush mylist3 1 2 3 (integer) 3 172.17.0.2:6379> lpush mylist3 1 2 3 (integer) 6 172.17.0.2:6379> lpush mylist3 1 2 3 (integer) 9 172.17.0.2:6379> lrange mylist3 0 -1 1) "3" 2) "2" 3) "1" 4) "3" 5) "2" 6) "1" 7) "3" 8) "2" 9) "1" 172.17.0.2:6379> lrem mylist3 2 3 (integer) 2 172.17.0.2:6379> lrange mylist3 0 -1 1) "2" 2) "1" 3) "2" 4) "1" 5) "3" 6) "2" 7) "1" 172.17.0.2:6379> lrem mylist3 -2 1 (integer) 2 172.17.0.2:6379> lrange mylist3 0 -1 1) "2" 2) "1" 3) "2" 4) "3" 5) "2" 172.17.0.2:6379> lrem mylist3 0 2 (integer) 3 172.17.0.2:6379> lrange mylist3 0 -1 1) "1" 2) "3"
172.17.0.2:6379> lset mylist 3 mmm OK 172.17.0.2:6379> lrange mylist 0 -1 1) "x" 2) "2" 3) "1" 4) "mmm" 5) "b" 6) "a" 172.17.0.2:6379> lpush mylist4 a b c (integer) 3 172.17.0.2:6379> lpush mylist4 a b c (integer) 6 172.17.0.2:6379> lrange mylist4 0 -1 1) "c" 2) "b" 3) "a" 4) "c" 5) "b" 6) "a" 172.17.0.2:6379> linsert mylist4 before b 11 (integer) 7 172.17.0.2:6379> lrange mylist4 0 -1 1) "c" 2) "11" 3) "b" 4) "a" 5) "c" 6) "b" 7) "a" 172.17.0.2:6379> linsert mylist4 after b 22 (integer) 8 172.17.0.2:6379> lrange mylist4 0 -1 1) "c" 2) "11" 3) "b" 4) "22" 5) "a" 6) "c" 7) "b" 8) "a"
172.17.0.2:6379> lpush mylist5 1 2 3 (integer) 3 172.17.0.2:6379> lpush mylist6 a b c (integer) 3 172.17.0.2:6379> lrange mylist5 0 -1 1) "3" 2) "2" 3) "1" 172.17.0.2:6379> lrange mylist6 0 -1 1) "c" 2) "b" 3) "a" 172.17.0.2:6379> rpoplpush mylist5 mylist6 "1" 172.17.0.2:6379> lrange mylist5 0 -1 1) "3" 2) "2" 172.17.0.2:6379> lrange mylist6 0 -1 1) "1" 2) "c" 3) "b" 4) "a"
获取列表元素个数
172.17.0.2:6379> llen mylist (integer) 5 172.17.0.2:6379> llen mylist2 (integer) 5 172.17.0.2:6379> llen mylist3 (integer) 0
两端弹出
172.17.0.2:6379> lpop mylist "3" 172.17.0.2:6379> lrange mylist 0 -1 1) "2" 2) "1" 3) "c" 4) "b" 5) "a" 172.17.0.2:6379> rpop mylist2 "3" 172.17.0.2:6379> lrange mylist2 0 -1 1) "a" 2) "b" 3) "c" 4) "1" 5) "2"
查看列表
172.17.0.2:6379> lrange mylist 0 5 1) "3" 2) "2" 3) "1" 4) "c" 5) "b" 6) "a" 172.17.0.2:6379> lrange mylist 0 -1 1) "3" 2) "2" 3) "1" 4) "c" 5) "b" 6) "a" 172.17.0.2:6379> lrange mylist2 0 -1 1) "a" 2) "b" 3) "c" 4) "1" 5) "2" 6) "3" 172.17.0.2:6379> lrange mylist2 0 -2 1) "a" 2) "b" 3) "c" 4) "1" 5) "2"
两端添加
172.17.0.2:6379> lpush mylist a b c (integer) 3 172.17.0.2:6379> lpush mylist 1 2 3 (integer) 6 172.17.0.2:6379> rpush mylist2 a b c (integer) 3 172.17.0.2:6379> rpush mylist2 1 2 3 (integer) 6
Redis 的数据结构
存储 list 常用命令:
两端添加
查看列表
两端弹出
获取列表元素个数
扩展命令
Redis 的数据结构
存储 list:
ArrayList 使用数组方式
LinkedList 使用双向链接方式
双向链表中增加数据
双向链表中删除数据
rpoplpush使用场景
rpoplpush使用场景
ArrayList 使用数组方式
LinkedList 使用双向链接方式
双向链表中增加数据;
双向链表中删除数据;
-- 两端添加
lpush mylist a b c 头部左侧插入
rpush mylist 1 2 3 头部右侧插入
-- 查看列表
lrang mylist 0 -1 从第一个到倒数第一个
-- 两端弹出
lpop mylist 头部弹出
rpop mylist 尾部弹出
-- 获取列表元素个数
llen mylist 查询list长度
lpushx mylist x 如果有mylist就在头部插入x 如果没有mylist不进行操作
rpushx mylist y 如果有mylist就在尾部插入x 如果没有mylist不进行操作
lrem mylist 2 3 从头到尾删除2个3
lrem mylist -2 1 从尾到头删除2个1
lrem mylist 0 2 删除里面所有2的元素
lset mylist 3 mmm 在头部第三个位置设置mmm
linsert mylist before b 11 在头部元素b前面插入11
linsert mylist after b 22 在头部元素b后面插入22
rpoplpush mylist5 mylist6 把列表5弹出插入到列表6
rpoplpush使用场景