package org.example.sink;
import com.alibaba.fastjson.JSONObject;
import org.example.bean.RedisUtils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPool;
import java.util.Map;
import java.util.TreeSet;
public class delRedisKey {
/**
     * 批量删除redis中相同前缀或后缀的工具
     * @param pattern
     * @return
     */
    public static TreeSet<String> keys(JedisCluster jedisCluster,String pattern){
//1、初始化容器
        TreeSet<String> keys = new TreeSet<>();
        //2、获取所有的节点
        Map<String, JedisPool> clusterNodes = jedisCluster.getClusterNodes();
        //遍历节点 获取所有符合条件的KEY
        for(String k : clusterNodes.keySet()){
            JedisPool jp = clusterNodes.get(k);
            Jedis connection = jp.getResource();
            try {
                keys.addAll(connection.keys(pattern));
            } catch(Exception e){
            } finally{
//用完一定要close这个链接!!!
                connection.close();
            }
        }
return keys;
    }

public static void main(String[] args) {
        JedisCluster jedisCluster = RedisUtils.getRedisCluter();
        TreeSet<String> trees=keys(jedisCluster,"T*");
        //1、执行删除操作
        for(String key:trees){
            jedisCluster.del(key);
            System.out.println(key);
        }
    }
}
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐