Redis删除相同前缀的key


直接撸demo

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.apache.commons.collections.CollectionUtils;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ScanParams;
import redis.clients.jedis.ScanResult;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;


/**
 * Class Name: Main.java
 * Time: 2020年5月15日 下午5:33:36
 * @author XinKaiKai
 *
 */
public class Main {
    
    private static Jedis jedis;
    private JedisPool jedisPool;
    private ShardedJedis shardedJedis;
    private ShardedJedisPool shardedJedisPool;
    
    public Main() 
    { 
        initialPool(); 
        initialShardedPool(); 
        shardedJedis = shardedJedisPool.getResource(); 
        jedis = jedisPool.getResource(); 
    } 
    
    private void initialPool() { 
        JedisPoolConfig config = new JedisPoolConfig(); 
        config.setMaxTotal(20);
        config.setMaxIdle(5); 
        config.setMaxWaitMillis(10001);
        config.setTestOnBorrow(false); 
        
        jedisPool = new JedisPool(config,"127.0.0.1",6379);
    }
    
    private void initialShardedPool() { 
        JedisPoolConfig config = new JedisPoolConfig(); 
        config.setMaxTotal(20); 
        config.setMaxIdle(5); 
        config.setMaxWaitMillis(1000l); 
        config.setTestOnBorrow(false);  
        List shards = new ArrayList(); 
        shards.add(new JedisShardInfo("127.0.0.1", 6379, "master")); 
        shardedJedisPool = new ShardedJedisPool(config, shards); 
    } 
    
    public static void main(String[] args) {
        new Main().removeKeys("userModulePri_*");
    }
    
    public void removeKeys(String key) {
        Boolean blBroken = false;
        List keys = new ArrayList();
        try {
            keys = getByScan(key, jedis);
            System.out.println("即将删除的key是 " + keys);
            String[] array = keys.toArray(new String[0]);
            jedis.del(array);
        } catch (Exception e) {
            blBroken = true;
            System.out.println("从redis中移除key:" + key + "失败。异常信息如下:" + e.getMessage());
        }
    }
    
    
    public static List getByScan(String key, Jedis jedis) {
        List list = new ArrayList<>();
        ScanParams params = new ScanParams();
        params.match(key);
        params.count(100);
        String cursor = "0";
        while (true) {
            ScanResult scanResult = jedis.scan(cursor, params);
            List eles = scanResult.getResult();
            if (!CollectionUtils.isEmpty(eles)) {
                list.addAll(eles);
            }
            cursor = scanResult.getStringCursor();
            if ("0".equals(cursor)) {
                break;
            }
        }
        return list;
    }

}