redis大key问题-生成大key-生成100万条测试数据

redis大key问题

文档

  1. redis单机安装
  2. redis集群模式 -集群搭建

官方文档

  1. 官网操作命令指南页面:https://redis.io/docs/latest/commands/?name=get&group=string
  2. Redis cluster specification

下载地址

  1. 官网:https://redis.io/
  2. 下载列表页面:https://download.redis.io/releases/

说明

  1. 版本选择:redis-7.0.0.tar.gz
  2. 下载地址:https://download.redis.io/releases/redis-7.0.0.tar.gz

redis大key问题

安装redis
  1. 以单机版redis为例,安装redis参考文档:redis单机安装
生成100万条string类型的测试数据
  1. 生成100万条string类型的测试数据

    shell 复制代码
    for((i=1;i<=100*10000;i++));
    do echo "set k$i v$i" >> redisTest.txt;
    done;
    
    cat redisTest.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
生成string类型的大key
  1. 包含5万字符

    shell 复制代码
    echo "SET big:string:5w $(printf 'x%.0s' {1..50000})" > string_5w.txt;
    
    cat string_5w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
  2. 包含10万字符

    shell 复制代码
    echo "SET big:string:10w $(printf 'x%.0s' {1..100000})" > string_10w.txt;
    
    cat string_10w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
  3. 包含50万字符

    shell 复制代码
    # 生成5个文件,每个包含10万字符的APPEND命令
    for file_num in {1..5}; do
        echo "APPEND big:string:50w $(printf 'x%.0s' {1..100000})" > string_50w_$file_num.txt
    done;
    
    # 先初始化空key
    echo "SET big:string:50w ''" | ../bin/redis-cli -p 6379 -a 123456 --pipe
    
    # 依次执行5个文件
    cat string_50w_1.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
    cat string_50w_2.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
    cat string_50w_3.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
    cat string_50w_4.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
    cat string_50w_5.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
生成hash类型的大key
  1. 包含5万键值对

    shell 复制代码
    for((i=1;i<=50000;i++));
    do echo "HSET big:hash:5w field_$i value_$i" >> hash_5w.txt;
    done;
    
    cat hash_5w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
  2. 包含10万键值对

    shell 复制代码
    for((i=1;i<=100000;i++));
    do echo "HSET big:hash:10w field_$i value_$i" >> hash_10w.txt;
    done;
    
    cat hash_10w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
  3. 包含50万键值对

    shell 复制代码
    for((i=1;i<=500000;i++));
    do echo "HSET big:hash:50w field_$i value_$i" >> hash_50w.txt;
    done;
    
    cat hash_50w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
生成list类型的大key
  1. 包含5万元素

    shell 复制代码
    for((i=1;i<=50000;i++));
    do echo "RPUSH big:list:5w item_$i" >> list_5w.txt;
    done; 
    
    cat list_5w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
  2. 包含10万元素

    shell 复制代码
    for((i=1;i<=100000;i++));
    do echo "RPUSH big:list:10w item_$i" >> list_10w.txt;
    done; 
    
    cat list_10w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
  3. 包含50万元素

    shell 复制代码
    for((i=1;i<=500000;i++));
    do echo "RPUSH big:list:50w item_$i" >> list_50w.txt;
    done; 
    
    cat list_50w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
生成set类型的大key
  1. 包含5万成员

    shell 复制代码
    for((i=1;i<=50000;i++));
    do echo "SADD big:set:5w member_$i" >> set_5w.txt;
    done;
    
    cat set_5w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
  2. 包含10万成员

    shell 复制代码
    for((i=1;i<=100000;i++));
    do echo "SADD big:set:10w member_$i" >> set_10w.txt;
    done;
    
    cat set_10w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
  3. 包含50万成员

    shell 复制代码
    for((i=1;i<=500000;i++));
    do echo "SADD big:set:50w member_$i" >> set_50w.txt;
    done;
    
    cat set_50w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
生成zset类型的大key
  1. 包含5万成员

    shell 复制代码
    for((i=1;i<=50000;i++));
    do echo "ZADD big:zset:5w $i member_$i" >> zset_5w.txt;
    done;
    
    cat zset_5w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
  2. 包含10万成员

    shell 复制代码
    for((i=1;i<=100000;i++));
    do echo "ZADD big:zset:10w $i member_$i" >> zset_10w.txt;
    done;
    
    cat zset_10w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
  3. 包含50万成员

    shell 复制代码
    for((i=1;i<=500000;i++));
    do echo "ZADD big:zset:50w $i member_$i" >> zset_50w.txt;
    done;
    
    cat zset_50w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
命令行查看
  1. 查看string类型key的value包含的字符数

    shell 复制代码
    # 命令: STRLEN <key>
    ../bin/redis-cli -p 6379 -a 123456 STRLEN big:string:5w
    ../bin/redis-cli -p 6379 -a 123456 STRLEN big:string:10w
    ../bin/redis-cli -p 6379 -a 123456 STRLEN big:string:50w
  2. 查看hash类型key的value包含的键值对数

    shell 复制代码
    # 命令: HLEN <key>
    ../bin/redis-cli -p 6379 -a 123456 HLEN big:hash:5w
    ../bin/redis-cli -p 6379 -a 123456 HLEN big:hash:10w
    ../bin/redis-cli -p 6379 -a 123456 HLEN big:hash:50w
  3. 查看list类型key的value包含的元素数

    shell 复制代码
    # 命令: LLEN <key>
    ../bin/redis-cli -p 6379 -a 123456 LLEN big:list:5w
    ../bin/redis-cli -p 6379 -a 123456 LLEN big:list:10w
    ../bin/redis-cli -p 6379 -a 123456 LLEN big:list:50w
  4. 查看set类型key的value包含的成员数

    shell 复制代码
    # 命令: SCARD <key>
    ../bin/redis-cli -p 6379 -a 123456 SCARD big:set:5w
    ../bin/redis-cli -p 6379 -a 123456 SCARD big:set:10w
    ../bin/redis-cli -p 6379 -a 123456 SCARD big:set:50w
  5. 查看zset类型key的value包含的成员数

    shell 复制代码
    # 命令: ZCARD <key>
    ../bin/redis-cli -p 6379 -a 123456 ZCARD big:zset:5w
    ../bin/redis-cli -p 6379 -a 123456 ZCARD big:zset:10w
    ../bin/redis-cli -p 6379 -a 123456 ZCARD big:zset:50w
  6. 查看每种类型最大的key

    shell 复制代码
    ../bin/redis-cli -a 123456 --bigkeys
  7. 查看某个key占用的字节数

    shell 复制代码
    ../bin/redis-cli -a 123456 memory usage big:string:50w
    • MEMORY USAGE返回的是 Redis 为该 key 分配的总内存,包括元数据、结构开销和碎片,因此会大于纯 value 的字节数
  8. 查看key的总数

    shell 复制代码
    ../bin/redis-cli -a 123456 dbsize

参考资料

  1. https://www.bilibili.com/video/BV13R4y1v7sP

注意事项

  1. 部分内容由AI生成
  2. 如有不对,欢迎指正!!!
相关推荐
没有气的汽水1 分钟前
一次生产 Redis 内存打满的排查、清理和复盘
redis
hey you~1 小时前
云呼叫中心坐席自动分配实战:ACD 策略、Redis+Lua 实现与排查清单
数据库·redis·lua·云呼叫中心·acd·坐席分配·坐席状态机
我不会起名字3222 小时前
Redis pipeline 用了反而更慢:3 类误用与正确的批量姿势
redis·pipeline·lua·rtt·批量
Tsuki_tl2 小时前
【总结】Redis五大数据类型应用场景及基本命令
数据库·redis·后端·缓存·缓存中间件·redis命令·redis 五大数据类型
代码丰17 小时前
大 JSON 放进 Redis 之后,如何用 Stream 解耦耗时任务?
redis·后端·系统架构
枫子有风21 小时前
卡码网盘项目深挖
java·redis·jwt·es·pgvector
福大大架构师每日一题21 小时前
redis 8.10.3正式发布:聚焦集群总线超大消息传播场景的安全修复,8.10.3 Latest更新解读
数据库·redis·安全
江屿风1 天前
【Plain Language Large Model】【从麦当劳点餐到Redis接入:MCP如何让AI工具集成变简单】流食般投喂
人工智能·redis·笔记·语言模型·llm·mcp
码智社1 天前
Redis 哨兵模式详解:从原理到生产实践
java·redis
与数据交流的路上1 天前
一次 redis 幽灵内存的分析
数据库·redis·缓存