美文网首页
Springboot中的redis用scan代替keys命令

Springboot中的redis用scan代替keys命令

作者: happut | 来源:发表于2019-12-19 12:10 被阅读0次

生产环境一般会屏蔽掉keys命令,但是有时会用到这个命令,比如刷新缓存,会把相同特定前缀的key都删除掉,如果没有keys命令,怎么进行删除呢?

通过Cursor获取要删除的key,例如key的前缀是xxx:prefix:xxx:

    ScanOptions options = ScanOptions.scanOptions().match("xxx:prefix:xxx:*").count(1000)
      .build();
    Cursor<String> cursor = (Cursor<String>) redisTemplate.executeWithStickyConnection(
      redisConnection -> new ConvertingCursor<>(redisConnection.scan(options),
        redisTemplate.getKeySerializer()::deserialize));

    cursor.forEachRemaining(key -> {
      redisTemplate.delete(key);
    });

.count(1000)中的1000是步进值,过小效率会低一些,尽量与数据级匹配些。
redisTemplate.delete(key);这部分可以替换成自己的代码,可以删除,也可以进行一些别的操作

相关文章

  • redis scan

    redis 用scan 代替keys,hgetAll 当redis中key数量越大,keys 命令执行越慢,而且最...

  • Springboot中RedisTemplate使用scan代替

    Springboot中RedisTemplate使用scan代替keys keys * 这个命令千万别在生产环境乱...

  • Springboot中的redis用scan代替keys命令

    生产环境一般会屏蔽掉keys命令,但是有时会用到这个命令,比如刷新缓存,会把相同特定前缀的key都删除掉,如果没有...

  • Java代码通过Lua实现Redis的scan命令(完美代替ke

    Java代码通过Lua实现Redis的scan命令(完美代替keys命令) 【原创,转载请注明出处】我的 【博客...

  • Redis 使用 scan 命令代替 keys

    由于 keys 命令会影响 redis 性能,所以将 keys 命令改为 scan 原本的代码: 修改后变为 结果...

  • redis-scan命令

    redis-scan命令 介绍&场景 redis中找到以某某开头的key对这些key进行操作。 问题 使用keys...

  • Redis命令:scan实现模糊查询

    1.前言 从Redis v2.8开始,SCAN命令已经可用,它允许使用游标从keyspace中检索键。对比KEYS...

  • Redis中keys与scan

    keys缺点 没有offset、limit参数,不能限制查询个数 keys是遍历算法,复杂度O(n),数据量大的时...

  • redis命令之KEYS和SCAN

    一、KEYS命令 作用:用于查找所有符合给定模式 pattern 的 key 用法:keys pattern其中p...

  • redis中scan

    常用redis查看库中的key,用keys *命令。 这是redis中数据不多可以这么用,如果数据量过百亿,还用k...

网友评论

      本文标题:Springboot中的redis用scan代替keys命令

      本文链接:https://www.haomeiwen.com/subject/cbkunctx.html