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. 如有不对,欢迎指正!!!
相关推荐
cfm_29146 小时前
Redis五大基本数据结构底层了解
数据结构·数据库·redis
真实的菜7 小时前
Redis 从入门到精通(十二):典型业务场景实战 —— 排行榜、限流器、秒杀系统、Session 共享
数据库·redis·python
x***r15111 小时前
Redis Desktop Manager 0.8.8 安装教程(Windows redis-desktop-manager-0.8.8.384详细步骤)
数据库·windows·redis
无涯大者12 小时前
Redis 实现页面缓存、购物车、登录 token示例、点赞 / 阅读计数,排行榜 示例
redis·缓存
真实的菜13 小时前
Redis 从入门到精通(十三):性能优化与运维实战 —— 慢查询、内存优化、监控与安全
运维·redis·性能优化
Java 码思客16 小时前
【Redis分布式缓存实战】第20章 Redis监控运维与自动化体系
运维·redis·缓存
勇往直前plus16 小时前
Redis&Python 梳理
数据库·redis·python
我是一颗柠檬17 小时前
【Java项目技术亮点】分布式锁实现与优化:从Redisson到ZooKeeper,彻底搞懂分布式锁的底层原理
java·redis·分布式·中间件·java-zookeeper
宁小法18 小时前
Redis evalsha 可能返回的错误类型
redis·php·lua报错
我是一颗柠檬19 小时前
【Redis】Redis面试高频考点汇总Day15(2026年)
数据库·redis·缓存·面试