redis-list常用命令

博客介绍了Redis中list是双向链表,它既可用作队列实现先进先出,也能当作栈实现先进后出。还提到读写list时,ltrim、rpoplpush、brpoplpush仅有左操作。其应用场景包括阻塞队列和消息队列。

list是双向链表

  • list既可以被用作队列,先进先出FIFO,first-in-first-out;
  • 也可以被用作栈,先进后出 FILO ,first-in-last-out
读写list
# 将name1 push到list1中
127.0.0.1:6379> lpush list1 name1
(integer) 1

#查找 从下标0 到 -1处的列表,相当于查询列表的全量值
127.0.0.1:6379> lrange list1 0 -1
1) "name1"

# push多个元素到list1中
127.0.0.1:6379> lpush list1 name2 name3 name4
(integer) 4
127.0.0.1:6379> lrange list1 0 -1
1) "name4"
2) "name3"
3) "name2"
4) "name1"

# 查询下标[0,1]处的元素,即为第1、2个元素,闭区间
127.0.0.1:6379> lrange list1 0 1
1) "name4"
2) "name3"

# 根据下标范围查询元素,如果查询下标超过实际下标,则只返回list有的部分
127.0.0.1:6379> lrange list1 0 10
1) "name4"
2) "name3"
3) "name2"
4) "name1"

#从右侧push元素到list1中
127.0.0.1:6379> rpush list1 age 1
(integer) 6
127.0.0.1:6379> LRANGE list1 0 -1
1) "name4"
2) "name3"
3) "name2"
4) "name1"
5) "age"
6) "1"

# list1中从左侧弹出一个元素
127.0.0.1:6379> lpop list1
"name4"
127.0.0.1:6379> lrange list1 0 -1
1) "name3"
2) "name2"
3) "name1"
4) "age"
5) "1"

# list1中从右侧弹出1个元素
127.0.0.1:6379> rpop list1
"1"
127.0.0.1:6379> lrange list1 0 -1
1) "name3"
2) "name2"
3) "name1"
4) "age"
127.0.0.1:6379> 

# 获取list中元素的个数 
127.0.0.1:6379> LLEN list1
(integer) 4

#如果list存在,从左侧向list中push元素,否则不尽兴任何操作
127.0.0.1:6379> LPUSHX list1 name
(integer) 5
127.0.0.1:6379> llen list1
(integer) 5
127.0.0.1:6379> lrange list1 0 -1
1) "name"
2) "name3"
3) "name2"
4) "name1"
5) "age"
127.0.0.1:6379> keys *
1) "list1"
127.0.0.1:6379> lpushx list2 name1
(integer) 0
127.0.0.1:6379> keys *
1) "list1"
127.0.0.1:6379> lpushx list1 name2
(integer) 6

# 如果list存在,从右侧向list中放入元素
127.0.0.1:6379> rpushx list4 name4
(integer) 0
127.0.0.1:6379> 

# list中的元素可以重复
127.0.0.1:6379> lrange list1 0 -1
1) "name2"
2) "name"
3) "name3"
4) "name2"
5) "name1"
6) "age"
127.0.0.1:6379> 

# 根据元素下标 查询元素
127.0.0.1:6379> LINDEX list1 1
"name"
127.0.0.1:6379> LINDEX list1 10
(nil)
127.0.0.1:6379> 


# 根据元素名称 和个数 删除元素
# 从由左到由从list1中删除2个name2,如果list1中有3个name2,那么最右侧的会被保留
# 和pop的区别,都是删除,但是pop只能依次删除,lrem可以根据元素的value进行删除
127.0.0.1:6379> lrange list1 0 -1
1) "name2"
2) "name"
3) "name3"
4) "name2"
5) "name1"
6) "age"
127.0.0.1:6379> lrem list1 2 name2
(integer) 2
127.0.0.1:6379> lrange list1 0 -1
1) "name"
2) "name3"
3) "name1"
4) "age"
127.0.0.1:6379> lpop list1 age
(error) ERR wrong number of arguments for 'lpop' command
127.0.0.1:6379> lpop list1 age
(error) ERR wrong number of arguments for 'lpop' command
127.0.0.1:6379> lpop list1  1 age
(error) ERR wrong number of arguments for 'lpop' command
127.0.0.1:6379> lrem list1 1 age
(integer) 1
127.0.0.1:6379> 


127.0.0.1:6379> lpush list1 age1 age2 age3 age4
(integer) 4
127.0.0.1:6379> lpush list2 namea1 name2 name3 name4
(integer) 4
127.0.0.1:6379> lrange list1 0 -1
1) "age4"
2) "age3"
3) "age2"
4) "age1"
127.0.0.1:6379> lrange list2 0 -2
1) "name4"
2) "name3"
3) "name2"
127.0.0.1:6379> lrange list2 0 -1
1) "name4"
2) "name3"
3) "name2"
4) "namea1"

# 从右侧弹出1个元素,然后从左侧将该元素push到另一个list中
127.0.0.1:6379> RPOPLPUSH list1 otherlist
"age1"
127.0.0.1:6379> lrange otherlist 0 -1
1) "age1"

# 阻塞知道原有一个可用的list可以元素能用于pop操作
127.0.0.1:6379> BRPOPLPUSH list1 newlist 10
"age2"
127.0.0.1:6379> lrange newlist 0 -1
1) "age2"
127.0.0.1:6379> keys *
1) "otherlist"
2) "list2"
3) "newlist"
4) "list1"

# del 删除key
127.0.0.1:6379> del otherlist
(integer) 1
127.0.0.1:6379> keys *
1) "list2"
2) "newlist"
3) "list1"

# 从左侧弹出一个元素,或者阻塞等待有元素可用视,进行pop操作,超时时间设置为0
127.0.0.1:6379> BLPOP list 0

127.0.0.1:6379> BRPOP list 0

 
 
127.0.0.1:6379> lpush list1 name1 name2 name3 name4
(integer) 4
127.0.0.1:6379> lrange list1 0 -1
1) "name4"
2) "name3"
3) "name2"
4) "name1"
# 设置指定下标处,元素的值
127.0.0.1:6379> lset list1 2 evelyn
OK
127.0.0.1:6379> lrange list1 0 -1
1) "name4"
2) "name3"
3) "evelyn"
4) "name1"
127.0.0.1:6379> lrange list1 0 -1
1) "name4"
2) "name3"
3) "evelyn"
4) "name1"

# 将list由左到由进行截取为新的list
127.0.0.1:6379> lrange list1 0 -1
1) "name3"
2) "evelyn"
127.0.0.1:6379> 
ltrim、rpoplpush、brpoplpush仅有左操作,没有由操作
应用场景

阻塞队列、消息队列

redis-cli是Redis提供的命令行接口工具,用于与Redis服务器进行交互。它提供了一系列命令,用于操作和管理Redis数据库。以下是一些常用的redis-cli命令: 1. 连接到Redis服务器:redis-cli -h host -p port -a password -h参数指定服务器主机名,-p参数指定服务器端口号,-a参数指定密码,可以通过这个命令来连接到Redis服务器。 2. 设置键值对:SET key value 该命令用于在Redis中设置键值对,key是键名,value是对应的值。 3. 获取键值对:GET key 该命令用于获取Redis中指定键的值。 4. 删除键值对:DEL key 该命令用于删除Redis中指定的键值对。 5. 查看所有键:KEYS pattern 该命令用于查看Redis中符合指定模式的所有键。 6. 查看键的类型:TYPE key 该命令用于查看Redis中指定键的数据类型。 7. 列出所有键的值:MGET key1 key2 ... 该命令用于一次性获取多个键的值。 8. 列出所有键值对:HGETALL key 该命令用于查看Redis哈希类型数据结构中指定键的所有字段和对应的值。 9. 增加键的值:INCR key 该命令用于将Redis中指定键的值增加1。 10. 减少键的值:DECR key 该命令用于将Redis中指定键的值减少1。 以上是一些常见的redis-cli命令,通过这些命令可以进行Redis数据库的操作和管理。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [redis-cli操作命令.txt](https://download.youkuaiyun.com/download/xilangyuyun/12580971)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [redis-cli:golang的redis-cli](https://download.youkuaiyun.com/download/weixin_42173218/15559284)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [redis-cli命令二进制包,linux环境独立可运行](https://download.youkuaiyun.com/download/qq_43626147/86393793)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值