redis大key问题

redis大key问题

文档

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

官方文档

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

说明

  1. redis版本:7.0.0

redis大key问题

安装redis
  1. 以单机版redis为例,安装redis参考文档:redis单机安装
什么是大key
  1. 大key并不是说key的本身,而是说value
  2. 《阿里云Redis开发规范》约定,String类型控制在10kb以内,hash、list、set、zset元素个数不要超过5000
  3. String的value,最大512MB,但是大于10kb就是大key
如何发现大key
  1. 连接redis-cli添加--bigkeys参数,可以列出每种类型最大的key,以及每种类型key的个数和平均大小

    命令:

    shell 复制代码
    cd /opt/module/redis/bin
    ./redis-cli -a 123456 --bigkeys

    返回信息:

    properties 复制代码
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    
    # Scanning the entire keyspace to find biggest keys as well as
    # average sizes per key type.  You can use -i 0.1 to sleep 0.1 sec
    # per 100 SCAN commands (not usually needed).
    
    [00.00%] Biggest string found so far '"k102211"' with 7 bytes
    [00.86%] Biggest list   found so far '"list1"' with 3 items
    [18.00%] Biggest set    found so far '"set1"' with 3 members
    [45.00%] Biggest string found so far '"k1000000"' with 8 bytes
    [57.52%] Biggest zset   found so far '"zset1"' with 5 members
    [100.00%] Sampled 1000000 keys so far
    
    -------- summary -------
    
    Sampled 1000003 keys in the keyspace!
    Total key length in bytes is 6888910 (avg len 6.89)
    
    Biggest   list found '"list1"' has 3 items
    Biggest string found '"k1000000"' has 8 bytes
    Biggest    set found '"set1"' has 3 members
    Biggest   zset found '"zset1"' has 5 members
    
    1 lists with 3 items (00.00% of keys, avg size 3.00)
    0 hashs with 0 fields (00.00% of keys, avg size 0.00)
    1000000 strings with 6888896 bytes (100.00% of keys, avg size 6.89)
    0 streams with 0 entries (00.00% of keys, avg size 0.00)
    1 sets with 3 members (00.00% of keys, avg size 3.00)
    1 zsets with 5 members (00.00% of keys, avg size 5.00)
    • 返回信息提示,可以用-i 0.1参数,使程序休眠 0.1 秒每100条SCAN命令(通常无需使用)。
  2. memory usage key命令,返回指定key占用多少子节内存

    命令:

    shell 复制代码
    127.0.0.1:6379> memory usage set1
    (integer) 64
如何删除大key
  1. String类型,使用异步删除,unlink
  2. list、hash、set、zset类型,使用渐进式删除,即先删除里面的元素,再删除key本身

待补充

相关推荐
lzhdim7 小时前
SQL 入门 15:SQL 事务:从 ACID 到四种常见的并发问题
数据库·sql
瀚高PG实验室7 小时前
瀚高企业版V9.1.1在pg_restore还原备份文件时提示extract函数语法问题
数据库·瀚高数据库
TDengine (老段)7 小时前
TDengine Tag 设计哲学与 Schema 变更机制
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
YOU OU8 小时前
Spring IoC&DI
java·数据库·spring
Muscleheng9 小时前
Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错
数据库·postgresql
罗超驿10 小时前
18.事务的隔离性和隔离级别:MySQL面试高频考点全解析
数据库·mysql·面试
jran-10 小时前
Redis 命令
数据库·redis·缓存
小江的记录本11 小时前
【Java基础】Java 8-21新特性:JDK21 LTS:虚拟线程、模式匹配switch、结构化并发、序列集合(附《思维导图》+《面试高频考点清单》)
java·数据库·python·mysql·spring·面试·maven
1892280486111 小时前
NY382固态MT29F32T08GSLBHL8-24QM:B
大数据·服务器·人工智能·科技·缓存
June`11 小时前
多线程redis下如何解决aof重写和rdb持久化的数据一致性问题
数据库·redis·缓存