当前位置: 首页 > news >正文

[001-07-001].Redis中的BigKey使用分析

1、常见面试题:

  • 1.阿里的广告平台,海量数据里面查询某一固定前缀的key
  • 2.小红书,如何在生产限制keys*/flushdb/flushall等危险命令以防止误删除误使用
  • 3.美团,MEMORU USAGE命令你使用过吗
  • 4.Bikey问题,多大算big?你如何发现?如何删除?如何处理
  • 5.BigKey你做过调优吗?惰性释放lazyfree了解过吗
  • 6.MoreKey问题。生产上redis数据库有1000W记录,你如何遍历?key*可以吗?

2、MorKey问题:

2.1.数据准备:

大批量往Redis中插入2000W数据测试key

  • 1.Linux Bash下面执行如下命令,是将100万条命令写入到temp目录下的一个临时文件中:
    在这里插入图片描述
  • 2.通过redis提供的管道–prpe命令插入1000W大批量数据
    在这里插入图片描述
  • 3.查看Redis中key的数量:
    在这里插入图片描述

2.2.某快递巨头真实生产案例:

a.新闻内容:

在这里插入图片描述

b. key*:你试试100wh花费多少秒遍历查询:

  • 1.key*:这个命令有致命的弊端,在生产环境中,最好不要使用
  • 2.禁用原因:
    在这里插入图片描述

c. 生产上限制key*/flushdb/flushall等危险命令以防止误删误用:

  • 1.通过配置设置禁用这些命令,redis.conf配置文件中在SEURITY这一项中
  • 2.配置如下:
    在这里插入图片描述

2.3.不适用key*避免卡顿,那应该用什么?

a.scan命令:

使用 Scan命令用于迭代数据库中的数据库键

  • 1.英文地址介绍
  • 2.中文地址介绍
    在这里插入图片描述

b.语法:

在这里插入图片描述
在这里插入图片描述

c.特点:

在这里插入图片描述

d.使用:

在这里插入图片描述


3、BigKey:

3.1.多大的算BigKey

参考 《阿里云Redis开发规范》

在这里插入图片描述


3.2.String和二级结构:

1.BigKey不仅仅说的是key很大,还有可能是value过大

  • 1.string 是value,最大512MB但是 >= 10KB 就是bigkey
  • 2.list、hash、set和zset个数超过5000就是bigkey

3.3.BigKey危害:

  • 1.内存不均,集群迁移困难
  • 2.超时删除,大key导致阻塞
  • 3.网络流量阻塞

3.4.BigKey如何产生

  • 1.社交类:明星的粉丝列表逐步递增:
  • 2.汇总统计:某个报表,经年累月的积累

3.5.BigKey如何发现

a.命令:redis-cli --bigkeys

1.好处:

  • 给出每种数据结构Top 1 bigkey,同时给出每种数据类型的键值个数+平均大小

2.不足

  • 想查询大于10kb的所有key,--bigkeys参数就无能为力了,需要用到memory usage来计算每个键值的字节数
redis-cli --bigkeys
redis-cli -h 127.0.0.1 -p 6379 -a 111111 --bigkeys//每隔 100 条 scan 指令就会休眠 0.1s,ops 就不会剧烈抬升,但是扫描的时间会变长
redis-cli -h 127.0.0.1 -p 7001 –-bigkeys -i 0.1

在这里插入图片描述


b.命令memory usage

1.计算每个键值的字节数

在这里插入图片描述
在这里插入图片描述


3 .6.删除bigkey

a.String

  • 1.一般用del,过于庞大使用unlink

b.hash

  • 1.使用hscan每次获取少量field-value,再使用hdel删除每个field
  • 2.语法
    在这里插入图片描述
  • 3.阿里手册:
    在这里插入图片描述

c.list:

  • 1.使用 ltrim 渐进式逐步删除,直到全部删除
  • 2.命令:
    在这里插入图片描述
    在这里插入图片描述
  • 3.阿里手册:
    在这里插入图片描述

d.set

  • 1.使用sscan 每次获取部分元素,再使用 srem 命令删除每个元素
  • 2.命令:
    在这里插入图片描述
  • 3.阿里手册:
    在这里插入图片描述

e.zset

  • 1.使用zscan每次获取部分元素,再使用ZREMRANGEBYRANK 命令删除每个元素
  • 2.命令:
    在这里插入图片描述
  • 3.阿里手册:
    在这里插入图片描述

2.6.BigKey生产调优:

a.阻塞和非阻塞删除命令:

在这里插入图片描述

b.优化配置:

在这里插入图片描述


http://www.mrgr.cn/news/17043.html

相关文章:

  • upload-labs靶场通关(附靶场环境)
  • 【C++】基础类之日期类
  • c++140namespace和ioterm
  • RESTful API介绍
  • Linux C++ 开发6 - GDB调试入门指南
  • Vue2.0
  • 【精选】基于python的3D打印技术专利分析系统(全网独一无二,最新定制)
  • TCP流套接字编程
  • ASCII、GB2312、Unicode和UTF-8
  • 热力学温度
  • 【面试经验】京东-技术产品经理一面
  • 好用的宠物浮毛清理神器,希喂、IAM、范罗士宠物空气净化器大揭秘
  • c++11新特性-lambda表达式
  • 时序约束进阶二:set_max_time_borrow详解
  • 【网络安全】XSS之HttpOnly防护(附实战案例)
  • 华为云征文|下一代云服务器,Flexus X实例选购指导
  • (3) 插入排序
  • 个人笔记总结
  • minio最新源码编译(处理安全扫描中跨域访问、.js.map等不安全问题) 版本:RELEASE.2024-06-26T01-06-18Z
  • SOMEIP_ETS_076: Wrong_Method_ID