• redis


    前面有简单学习过redis,此处扩展之.. 阿里云redis开发规范

    redis工具

    数据同步:redis-port

    big-key搜索

    参考:工具汇总

    命令行

    redis-cli --bigkeys
    

    find_bigkeys.py

    阿里云基于python工具,按key值长度

    python find_bigkey.py host port password
    

    rdb_bigkeys

    基于go实现的分析rdb文件查找big-key工具

    big-key删除

    //1、Hash删除: hscan + hdel
    public void delBigHash(String host, int port, String password, String bigHashKey) {
        Jedis jedis = new Jedis(host, port);
        if (!StringUtils.isBlank(password)) { jedis.auth(password); }
        ScanParams scanParams = new ScanParams().count(100);
        String cursor = "0";
        do {
            ScanResult<Entry<String, String>> scanResult = jedis.hscan(bigHashKey, cursor, scanParams);
            List<Entry<String, String>> entryList = scanResult.getResult();
            if (entryList != null && !entryList.isEmpty()) {
                for (Entry<String, String> entry : entryList) { jedis.hdel(bigHashKey, entry.getKey()); }
            }
            cursor = scanResult.getStringCursor();
        } while (!"0".equals(cursor));
    
        jedis.del(bigHashKey); //删除bigkey
    }
    //2、List删除: ltrim
    public void delBigList(String host, int port, String password, String bigListKey) {
        Jedis jedis = new Jedis(host, port);
        if (!StringUtils.isBlank(password)) { jedis.auth(password); }
        long llen = jedis.llen(bigListKey);
        int counter = 0, left = 100;
        while (counter < llen) {
            jedis.ltrim(bigListKey, left, llen); //每次从左侧截掉100个
            counter += left;
        }
        jedis.del(bigListKey); //最终删除key
    }
    //3、Set删除: sscan + srem
    public void delBigSet(String host, int port, String password, String bigSetKey) {
        Jedis jedis = new Jedis(host, port);
        if (!StringUtils.isBlank(password)) { jedis.auth(password); }
        ScanParams scanParams = new ScanParams().count(100);
        String cursor = "0";
        do {
            ScanResult<String> scanResult = jedis.sscan(bigSetKey, cursor, scanParams);
            List<String> memberList = scanResult.getResult();
            if (memberList != null && !memberList.isEmpty()) {
                for (String member : memberList) { jedis.srem(bigSetKey, member); }
            }
            cursor = scanResult.getStringCursor();
        } while (!"0".equals(cursor));
    
        jedis.del(bigSetKey);//删除bigkey
    }
    //4、SortedSet删除: zscan + zrem
    public void delBigZset(String host, int port, String password, String bigZsetKey) {
        Jedis jedis = new Jedis(host, port);
        if (!StringUtils.isBlank(password)) { jedis.auth(password); }
        ScanParams scanParams = new ScanParams().count(100);
        String cursor = "0";
        do {
            ScanResult<Tuple> scanResult = jedis.zscan(bigZsetKey, cursor, scanParams);
            List<Tuple> tupleList = scanResult.getResult();
            if (tupleList != null && !tupleList.isEmpty()) {
                for (Tuple tuple : tupleList) { jedis.zrem(bigZsetKey, tuple.getElement()); }
            }
            cursor = scanResult.getStringCursor();
        } while (!"0".equals(cursor));
     
        jedis.del(bigZsetKey); //删除bigkey
    }
    

    UNLINK
    Redis 4.0.0已提供UNLINK命令异步删除大key
    命令行:UNLINK key [key ...]

    热点key搜索

    命令行

    redis-cli --hotkeys
    

    monitor

    redis-faina

  • 相关阅读:
    boostrapvalidator
    bootstrap 整理
    emil 的使用
    sass笔记
    sql 语句的优化
    多线程笔记
    mysql笔记
    react
    优雅的创建map/list集合
    spring中路径的注入
  • 原文地址:https://www.cnblogs.com/wjcx-sqh/p/13511580.html
Copyright © 2020-2023  润新知