iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Redis通过scan查找不过期的 key(方法详解)
  • 756
分享到

Redis通过scan查找不过期的 key(方法详解)

2024-04-02 19:04:59 756人浏览 八月长安
摘要

Redis Scan 命令用于迭代数据库中的数据库键。 SCAN 返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标, 而第二个元素则是一个数组, 这个数组中包含了

Redis Scan 命令用于迭代数据库中的数据库键。

SCAN 返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标, 而第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。如果新游标返回 0 表示迭代已结束。

相关命令:

SSCAN 命令用于迭代集合键中的元素。
HSCAN 命令用于迭代哈希键中的键值对。
ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。

# SCAN 命令是一个基于游标的迭代器(cursor based iterator):SCAN 命令每次被调用之后,都会向用户返回一个新的游标,用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数,以此来延续之前的迭代过程。
# 注意:当 SCAN 命令的游标参数被设置为 0 时,服务器将开始一次新的迭代,而当服务器向用户返回值为 0 的游标时,表示迭代已结束!

# vim redis_no_ttl_key.sh


#!/bin/bash
# Redis 通过 scan 找出不过期的 key
# SCAN 命令是一个基于游标的迭代器(cursor based iterator):SCAN 命令每次被调用之后,都会向用户返回一个新的游标,用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数,以此来延续之前的迭代过程。
# 注意:当 SCAN 命令的游标参数被设置为 0 时,服务器将开始一次新的迭代,而当服务器向用户返回值为 0 的游标时,表示迭代已结束!

db_ip=10.100.41.148       # redis 连接IP
db_port=6379              # redis 端口
passWord='iootCdgN05srE'  # redis 密码
cursor=0                  # 第一次游标
cnt=100                   # 每次迭代的数量
new_cursor=0              # 下一次游标

redis-cli -c -h $db_ip -p $db_port -a $password scan $cursor count $cnt > scan_tmp_result
new_cursor=`sed -n '1p' scan_tmp_result`     # 获取下一次游标
sed -n '2,$p' scan_tmp_result > scan_result  # 获取 key
cat scan_result |while read line             # 循环遍历所有 key
do
    ttl_result=`redis-cli -c -h $db_ip -p $db_port -a $password ttl $line`  # 获取key过期时间
    if [[ $ttl_result == -1 ]];then
    #if [ $ttl_result -eq -1 ];then          # 判断过期时间,-1 是不过期
        echo $line >> no_ttl.log             # 追加到指定日志
    fi
done

while [ $cursor -ne $new_cursor ]            # 若游标不为0,则证明没有迭代完所有的key,继续执行,直至游标为0
do
    redis-cli -c -h $db_ip -p $db_port -a $password scan $new_cursor count $cnt > scan_tmp_result
    new_cursor=`sed -n '1p' scan_tmp_result`
    sed -n '2,$p' scan_tmp_result > scan_result
    cat scan_result |while read line
    do
        ttl_result=`redis-cli -c -h $db_ip -p $db_port -a $password ttl $line`
        if [[ $ttl_result == -1 ]];then
        #if [ $ttl_result -eq -1 ];then
            echo $line >> no_ttl.log
        fi
    done
done
rm -rf scan_tmp_result
rm -rf scan_result

到此这篇关于Redis通过scan查找不过期的 key的文章就介绍到这了,更多相关Redis scan 查找 key内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Redis通过scan查找不过期的 key(方法详解)

本文链接: https://www.lsjlt.com/news/132935.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis通过scan查找不过期的 key(方法详解)
    Redis Scan 命令用于迭代数据库中的数据库键。 SCAN 返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标, 而第二个元素则是一个数组, 这个数组中包含了...
    99+
    2024-04-02
  • redis通过key查询的方法是什么
    在Redis中,通过key查询的方法是使用`GET`命令。以下是使用`GET`命令查询key的示例:```bashGET key_n...
    99+
    2023-09-12
    redis
  • redis过期key处理的方法是什么
    Redis过期key的处理方法有以下几种:1. 被动删除:当客户端尝试访问一个已经过期的key时,Redis会立即删除该key,并返...
    99+
    2023-09-11
    redis
  • Redis监听过期的key实现流程详解
    目录一、简介二、maven依赖三、编码实现3.1、application.properties3.2、Redis配置类3.3、监听器3.4、服务类3.5、工具类四、测试4.1、测试类...
    99+
    2023-02-28
    Redis监听过期的key Redis监听key
  • redis通过命令行批量删除key的方法
    这篇文章给大家分享的是有关redis通过命令行批量删除key的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。可用的方法有:1、使用cliFLUSHDB 清除一个数据库,FLU...
    99+
    2024-04-02
  • Springboot详解缓存redis实现定时过期方法
    目录前言添加依赖添加配置常规缓存开启缓存设置缓存空间设置缓存增加设置缓存过期时间总结后记前言 使用redis进行缓存数据,是目前比较常用的缓存解决方案。常用的缓存形式有一下几种: 1...
    99+
    2024-04-02
  • JavaScript如何通过querySelectorAll()方法查找html元素
    这篇文章主要介绍了JavaScript如何通过querySelectorAll()方法查找html元素的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript如何通过...
    99+
    2024-04-02
  • Redis数据过期策略的实现详解
    目录一、设置过期时间1、常用方式2、字符串独有方式二、3种过期策略三、Redis采用的过期策略四、RDB对过期key的处理五、AOF对过期key的处理  本文对Redis的过期机制简...
    99+
    2024-04-02
  • 通过Homebrew安装配置Redis的方法
    这篇文章主要介绍了通过Homebrew安装配置Redis的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。背景通过 Homebrew (htt...
    99+
    2024-04-02
  • navicat premium过期的解决方法
    这篇文章给大家分享的是有关navicat premium过期的解决方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。navicat premium试用期的破解方法:1、按步骤安装...
    99+
    2024-04-02
  • SpringBoot actuator 健康检查不通过的解决方案
    SpringBoot actuator 健康检查不通过 今天遇到有个服务能够注册成功,但是健康检查不通过,通过浏览器访问健康检查的url,chrome的network一直显示pend...
    99+
    2024-04-02
  • redis通过lua脚本,获取满足key pattern的所有值方式
    我们知道,redis提供了keys命令去获取所有满足格式的key,如我们键入命令 keys "user*" 将得到所有以user开头的key 然后执行 mget命令可以获取多...
    99+
    2024-04-02
  • redis过期数据清理的方法是什么
    Redis过期数据的清理主要通过以下两种方法来实现: 定时过期数据清理:Redis会在数据设置过期时间时记录该数据的过期时间,并...
    99+
    2024-04-02
  • 通过Feign进行调用@FeignClient 找不到的解决方案
    目录Feign进行调用@FeignClient 找不到通过Feign 进行调用Feign通过服务名调用服务,找不到服务报错环境报错时,注册中心的情况报错情况Feign进行调用@Fei...
    99+
    2024-04-02
  • Java通过反射注解赋值的方法详解
    目录问题描述最终解决if/else 普通解法通过反射注解赋值属性解题思路汇总某些字段的和总结源码前段时间,领导分配一个统计销售区域汇总的数据,解决方案使用到了反射获取注解,通过注解获...
    99+
    2024-04-02
  • 通过CartPole游戏详解PPO优化的方法
    本篇内容主要讲解“通过CartPole游戏详解PPO优化的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“通过CartPole游戏详解PPO优化的方法”吧!CartPole 介绍在一个光滑的轨...
    99+
    2023-07-06
  • navicat premium过期了的解决方法
    这篇文章主要介绍了navicat premium过期了的解决方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。  navicat作为一款强大...
    99+
    2024-04-02
  • Redis实现订单过期删除的方法步骤
    目录前言代码实现:兜底策略前言 设计订单过期,不能单纯靠Redis,需要兜底策略 代码实现: import com.coolplay.trade.dto.req.CancelOrde...
    99+
    2024-04-02
  • 通过Docker部署Redis 6.x集群的方法
    系统环境: Redis 版本:6.0.8 Docker 版本:19.03.12 系统版本:CoreOS 7.8 内核版本:5.8.5-1.el7.elrepo.x8...
    99+
    2024-04-02
  • 通过Cursor工具使用GPT-4的方法详解
    目录下载Cursor Cursor1. 登录GitHub:Sign in to GitHub · GitHub2. 输入Cursor中给出的8位code&nb...
    99+
    2023-05-20
    Cursor 工具使用GPT-4 GPT-4使用
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作