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. 如有不对,欢迎指正!!!
相关推荐
X-⃢_⃢-X2 小时前
十、Redis之布隆过滤器
数据库·redis·缓存
流星白龙3 小时前
【Redis】1.Redis特性
数据库·redis·缓存
二宝哥17 小时前
CentOS 7.9 系统下 Redis 5.0.4 单机安装与源码编译安装指南
redis·centos
ShiXZ2131 天前
Redis docker-compose 部署指南
redis·docker·eureka
青山木1 天前
Redis 缓存一致性全解:从 Cache Aside 到延迟双删、Canal+MQ 的进阶之路
java·数据库·redis·后端·缓存
YDS8291 天前
大营销平台 —— 活动SKU库存扣减业务及其一致性处理
java·spring boot·redis·rabbitmq·ddd
爬也要爬着前进2 天前
redis主从搭建
数据库·redis·缓存
用户095367515832 天前
在系统的学习 redis 前的疑惑
redis·go
吴声子夜歌2 天前
Redis 3.x——集群故障转移
java·数据库·redis·集群
明豆2 天前
Redis 分布式缓存生产实战
redis·分布式·缓存