Redis 定期删除ZSet中无效的Member

当需要对Redis中的ZSet成员设置过期删除,但无法直接设置Key过期时,可以通过编写脚本并在Linux定时任务中执行来实现。本文介绍了一种基于score的过期删除方法,包括脚本内容、时间转换处理及Linux定时调度配置,例如在凌晨两点执行删除操作。
摘要由CSDN通过智能技术生成

如果使用redis zset结构,key不能直接设置过期时间,又想对member设置过期删除时,可以使用这个脚本根据score进行过期删除。大家可以参考下,score的格式需要自定义调整下。

删除脚本redis-del-keys.sh (main)

#!/bin/bash
##redis主机IP
host=$1
##redis端口
port=$2
##redis端口
password=$3
##redis db
db=$4
##key模式
pattern=$5
##游标
cursor=0
Redis 的 Zset(有序集合)是一个由 MemberScore 组成的集合,它与集合不同的是每个元素都会关联一个 double 类型的分数(score),Redis 通过分数来进行排序。要修改 Zset Member,通常有两种情况,一是改变 Member 的分数,二是改变 Member 本身。 1. 修改 Member 的分数: - 使用 `ZINCRBY` 命令可以增加或减少一个 Member 的分数。其格式为 `ZINCRBY key increment member`。这里的 `key` 是有序集合的名称,`increment` 是要增加的分数值(如果是负数则是减少),`member` 是要修改分数的 Member。 例如,将名为 `myzset` 的有序集合 Member `member1` 的分数增加 5 分,可以使用如下命令: ``` ZINCRBY myzset 5 member1 ``` 2. 修改 Member 本身: - 如果需要更改 Member 本身,而不是它的分数,可以使用 `ZRENAME` 命令。其格式为 `ZRENAME source destination nx`。这里的 `source` 是原始的 Member 名称,`destination` 是新的 Member 名称。如果 `destination` 已经存在,`nx` 参数用于决定是否执行操作(`nx` 为可选参数,表示仅当新的 Member 名称不存在时才执行重命名,否则不执行)。 例如,将名为 `myzset` 的有序集合的 `member2` 更名为 `new-member2`,可以使用如下命令: ``` ZRENAME myzset member2 new-member2 ``` 请注意,`ZRENAME` 命令在 Redis 3.2.0 版本引入,如果你使用的是早期版本的 Redis,该命令可能不存在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值