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. 如有不对,欢迎指正!!!
相关推荐
n***33352 小时前
linux redis简单操作
linux·运维·redis
T***74253 小时前
redis连接服务
数据库·redis·bootstrap
m***92384 小时前
Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)
数据库·redis·缓存
程序员皮皮林5 小时前
Redis:大数据中如何抗住2000W的QPS
大数据·数据库·redis
n***s9095 小时前
Redis如何设置密码
数据库·redis·缓存
y***61315 小时前
redis 使用
数据库·redis·缓存
n***78685 小时前
Redis-配置文件
数据库·redis·oracle
r***11336 小时前
如何实现Redis安装与使用的详细教程
数据库·redis·缓存
闲人编程6 小时前
Django缓存策略:Redis、Memcached与数据库缓存对比
数据库·redis·缓存·django·memcached·codecapsule