Redis键值设计

文章目录

    • 1.优雅的key
    • 2.拒绝BigKey
      • 2.1.什么是BigKey
      • 2.2.BigKey的危害
      • 2.3.如何发现BigKey
      • 2.4.如何删除BigKey
    • 3.恰当的数据类型

1.优雅的key

Redis键值设计_第1张图片

2.拒绝BigKey

2.1.什么是BigKey

Redis键值设计_第2张图片

2.2.BigKey的危害

Redis键值设计_第3张图片

2.3.如何发现BigKey

Redis键值设计_第4张图片

scan扫描示例代码

    final static int STR_MAX_LEN = 10 * 1024;
    final static int HASH_MAX_LEN = 500;

    @Test
    void testScan() {
        int maxLen = 0;
        long len = 0;

        String cursor = "0";
        do {
            // 扫描并获取一部分key
            ScanResult<String> result = jedis.scan(cursor);
            // 记录cursor
            cursor = result.getCursor();
            List<String> list = result.getResult();
            if (list == null || list.isEmpty()) {
                break;
            }
            // 遍历
            for (String key : list) {
                // 判断key的类型
                String type = jedis.type(key);
                switch (type) {
                    case "string":
                        len = jedis.strlen(key);
                        maxLen = STR_MAX_LEN;
                        break;
                    case "hash":
                        len = jedis.hlen(key);
                        maxLen = HASH_MAX_LEN;
                        break;
                    case "list":
                        len = jedis.llen(key);
                        maxLen = HASH_MAX_LEN;
                        break;
                    case "set":
                        len = jedis.scard(key);
                        maxLen = HASH_MAX_LEN;
                        break;
                    case "zset":
                        len = jedis.zcard(key);
                        maxLen = HASH_MAX_LEN;
                        break;
                    default:
                        break;
                }
                if (len >= maxLen) {
                    System.out.printf("Found big key : %s, type: %s, length or size: %d %n", key, type, len);
                }
            }
        } while (!cursor.equals("0"));
    }

2.4.如何删除BigKey

Redis键值设计_第5张图片

3.恰当的数据类型

Redis键值设计_第6张图片

Redis键值设计_第7张图片

Redis键值设计_第8张图片

Redis键值设计_第9张图片

你可能感兴趣的:(redis,服务器,数据库,笔记)