Redis的List命令LREM|LTRIM

一 LREM介绍
1 从列表头部开始删除值等于value的元素count次
LREM key count value
count>0:从表头开始向表尾搜索,移除与value相等的元素,数量为count
count<0:从表尾开始向表头搜索,移除与value相等的元素,数量为count的决定值
count=0:移除表中所有value相等的值
2 举例
127.0.0.1:6379> RPUSH listkey c abc c ab 123 ab bj ab redis list
(integer) 10
127.0.0.1:6379> LREM listkey 2 ab
(integer) 2
127.0.0.1:6379> LRANGE listkey 0 -1
1) "c"
2) "abc"
3) "c"
4) "123"
5) "bj"
6) "ab"
7) "redis"
8) "list"
3 说明
4 实战
127.0.0.1:6379> lRANGE list 0 -1
1) "redis"
2) "python"
### Redis List 类型命令大全及用法 #### 1. `LPUSH` 和 `RPUSH` 向列表头部或尾部插入一个或多个值。如果列表不存在,则创建一个新的列表并执行插入操作。 ```bash 127.0.0.1:6379> LPUSH mylist "value1" (integer) 1 127.0.0.1:6379> RPUSH mylist "value2" (integer) 2 ``` #### 2. `LPOP` 和 `RPOP` 移除并返回列表头或尾的第一个元素。如果列表为空,则返回 `nil`。 ```bash 127.0.0.1:6379> LPOP mylist "value1" 127.0.0.1:6379> RPOP mylist "value2" ``` #### 3. `LRANGE` 获取列表中指定范围内的元素,支持负数索引表示倒序访问[^1]。 ```bash 127.0.0.1:6379> LRANGE mylist 0 -1 1) "l5" 2) "l4" 3) "l3" 4) "l2" 5) "l1" ``` #### 4. `LLEN` 获取列表中元素的数量。如果键不存在则认为是一个空列表,返回 `0`。 ```bash 127.0.0.1:6379> LLEN mylist (integer) 5 ``` #### 5. `LINDEX` 通过索引获取列表中的某个元素。如果索引超出范围,则返回 `nil`。 ```bash 127.0.0.1:6379> LINDEX mylist 2 "l3" ``` #### 6. `LSET` 设置列表中某位置的元素值。如果索引超出范围会报错。 ```bash 127.0.0.1:6379> LSET mylist 2 "new_value" OK ``` #### 7. `LTRIM` 修剪列表使其只保留指定区间的元素,其余部分被删除。 ```bash 127.0.0.1:6379> LTRIM mylist 1 3 OK ``` #### 8. `LREM` 从列表中移除匹配的元素。可以通过参数控制移除数量以及方向(从前到后或从后向前)[^1]。 ```bash 127.0.0.1:6379> LREM mylist 2 "value_to_remove" (integer) 2 ``` #### 9. `BLPOP` 和 `BRPOP` 阻塞版本的 `LPOP` 和 `RPOP`,当列表为空时等待直到有数据可弹出或者超时。 ```bash 127.0.0.1:6379> BLPOP mylist 0 1) "mylist" 2) "value1" ``` #### 10. `BRPOPLPUSH` 原子化地将元素从源列表移动到目标列表,并返回该元素。 ```bash 127.0.0.1:6379> BRPOPLPUSH srclist dstlist 0 "value" ``` --- ### 示例代码 以下是几个常用命令的操作示例: ```python import redis r = redis.Redis(host='localhost', port=6379, decode_responses=True) # 添加元素到列表 r.lpush('test_list', 'item1') r.rpush('test_list', 'item2') # 获取列表长度 length = r.llen('test_list') # length is 2 # 获取整个列表的内容 items = r.lrange('test_list', 0, -1) # ['item1', 'item2'] # 移除第一个匹配项 removed_count = r.lrem('test_list', 1, 'item1') # removed one item # 设置特定索引处的值 r.lset('test_list', 0, 'new_item') # 删除除了指定区间外的所有其他元素 r.ltrim('test_list', 0, 1) ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值