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. 如有不对,欢迎指正!!!
相关推荐
what丶k5 小时前
深入解析Redis数据持久化:RBD机制原理、实操与生产最佳实践
数据库·redis·缓存
Dreamboat-L8 小时前
Redis及其两种持久化技术详解
数据库·redis·缓存
三水不滴9 小时前
Redis缓存更新策略
数据库·经验分享·redis·笔记·后端·缓存
企鹅侠客10 小时前
第35章—内核解析篇:Redis内存淘汰机制
数据库·redis
曹轲恒10 小时前
【Redis持久化核心】AOF/RDB通俗详解+多场景对比
数据库·redis·bootstrap
优雅的潮叭11 小时前
cud编程之 reduce
android·redis·缓存
打工的小王11 小时前
redis(三)redis持久化和集群(redis版本:5.0.4)
数据库·redis·缓存
心之伊始12 小时前
Redis 持久化机制深度解析(RDB / AOF / 混合持久化)
数据库·redis·bootstrap
三水不滴14 小时前
Redis 持久化机制
数据库·经验分享·redis·笔记·缓存·性能优化
挺6的还15 小时前
16.哨兵(sentinel)
redis