springboot redis cluster模式 scan操作

springboot1.x

1. rediscluster模式是不可以直接scan操作的,我们可以拿到所有的节点,通过遍历所有节点的方式去scan

public Set<String> scan(String key) {
    return redisTemplate.execute((RedisCallback<Set<String>>) connection -> {
        Set<String> keys = new HashSet<>();

        JedisCluster cluster = (JedisCluster) connection.getNativeConnection();
        Collection<JedisPool> pools = cluster.getClusterNodes().values();

        for (JedisPool pool : pools) {
            Jedis resource = pool.getResource();
            ScanParams scanParams = new ScanParams();
            scanParams.match(key + "*");
            scanParams.count(DEFAULT_COUNT);
            ScanResult<String> scan = resource.scan("0", scanParams);
            while (null != scan.getStringCursor()) {
                keys.addAll(scan.getResult());
                if (StringUtils.equals(
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Spring Boot是一个用于创建独立的、基于Spring的应用程序的框架。它简化了Spring应用程序的开发过程,提供了自动配置和约定优于配置的原则。Redis是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中间件。 在Spring Boot中使用Redis可以通过集成Spring Data Redis来实现。Spring Data Redis提供了一组简化的API,使得与Redis进行交互变得更加方便。 Redis的SCAN命令用于迭代遍历Redis中的键。它可以按照指定的模式匹配进行键的筛选,并返回匹配的键列表。SCAN命令可以分批次地返回结果,避免一次性返回大量的键,从而减少网络传输的开销。 在Spring Boot中使用Redis的SCAN命令可以通过使用RedisTemplate或者StringRedisTemplate来实现。以下是一个使用StringRedisTemplate进行SCAN操作的示例代码: ```java @Autowired private StringRedisTemplate redisTemplate; public List<String> scanKeys(String pattern) { List<String> keys = new ArrayList<>(); ScanOptions options = ScanOptions.scanOptions().match(pattern).build(); Cursor<String> cursor = redisTemplate.opsForValue().getOperations().scan(options); while (cursor.hasNext()) { keys.add(cursor.next()); } return keys; } ``` 以上代码中,我们通过StringRedisTemplate获取Redis连接,并使用opsForValue()方法获取操作字符串类型数据的接口。然后,我们使用scan()方法进行键的迭代遍历,并将匹配的键添加到列表中返回。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值