常见问题

 

使用redis-cli查找大key

更新时间 2023-09-06

本文主要介绍如何使用 redis-cli 的 “–bigkeys” 选项查找大 Key。

背景信息

Redis 提供了 List、Hash、Zset 等复杂类型的数据结构,在使用 Redis 时可能由于 Key 设计不合理导致某个 Key 过大,致使读取、删除这些数据的操作花费过多的时间,从而对业务产生一定影响。另外,在集群模式下大 Key 的产生容易导致某个子节点的内存溢出。故我们需要找出大 Key,并对内存结构进行优化。

前提条件

  • 已有与 Redis Cluster 实例可以互通的云服务器。

  • 云服务器中已安装 Redis 客户端。安装步骤可参见redis-cli 连接中的步骤1。

    说明

    Redis 客户端自带 redis-cli 工具。

操作步骤

  1. 登录已安装 redis-cli 的云服务器。

  2. 执行如下命令查找大 key。

    redis-cli -h <redis_instance_address> -a <password> -p <port> --bigkeys
    

    ▪︎ <redis_instance_address>:表示 Redis Cluster 实例的 IP 地址,请根据实际地址替换。

    ▪︎ <port>:表示 Redis Cluster 实例的端口号,默认为 6379。

    ▪︎ <password>:表示 Redis Cluster 实例的认证密码。

    ▪︎ --bigkeys:表示查找大 key。

    执行成功后,系统显示类似如下信息。

    $ redis-cli -h 192.168.*.* -a ****** -p 6379 --bigkeys
    
    # Scanning the entire keyspace to find biggest keys as well as
    # average sizes per key type.  You can use -i 0.1 to sleep 0.1 sec
    # per 100 SCAN commands (not usually needed).
    
    [00.00%] Biggest string found so far 'key-419' with 3 bytes
    [05.14%] Biggest list   found so far 'mylist' with 100004 items
    [35.77%] Biggest string found so far 'counter:__rand_int__' with 6 bytes
    [73.91%] Biggest hash   found so far 'myobject' with 3 fields
    
    -------- summary -------
    
    Sampled 506 keys in the keyspace!
    Total key length in bytes is 3452 (avg len 6.82)
    
    Biggest string found 'counter:__rand_int__' has 6 bytes
    Biggest   list found 'mylist' has 100004 items
    Biggest   hash found 'myobject' has 3 fields
    
    504 strings with 1403 bytes (99.60% of keys, avg size 2.78)
    1 lists with 100004 items (00.20% of keys, avg size 100004.00)
    0 sets with 0 members (00.00% of keys, avg size 0.00)
    1 hashs with 3 fields (00.20% of keys, avg size 3.00)
    0 zsets with 0 members (00.00% of keys, avg size 0.00)
    
这篇文档解决了您的问题吗?
0
0