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

Redis——BigKey

1. MoreKey

        当redis key的数量过多时,使用keys*会耗费大量时间和性能,因此在生产上需要禁用一些危险命令。

如何禁用命令

在 redis.conf 文件 SECURITY 板块中设置 rename-command

例如禁用keys,flushdb,flushall

rename-command keys ""
rename-command flushdb ""
rename-command flushall ""

禁用keys*如何迭代查询key

使用scan命令,此外SSCAN用于set类型,HSCAN用于Hash类型,ZSCAN用于ZSet类型

SCAN cursor [MATCH pattern][count count]
// pattern 匹配模式
// count 迭代数量,默认10

遍历key时将cursor设为0,执行scan会返回一个游标值,下一次迭代从该游标值开始,当返回游标值为0时完成一次遍历

 查找以tk开头的key

 


2. BigKey

String类型大于10KB,list、hash、set和zset个数超过5000就可以称为BigKey

危害

  • 内存不均,集群迁移困难
  • 超时删除
  • 网络流量阻塞

如何发现

方法一:--bigkeys 

redis-cli --bigkeys

方法二:MEMORY USAGE 

该命令给出一个key和它的值在RAM中所占用的字节数

 

如何删除

非字符串的bigkey不要使用del删除,使用hscan、sscan、zscan方式渐进式删除,同时要注意防止bigkey过期时间自动删除问题,例如200万个zset设置1小时过期,会触发del操作,造成阻塞

String:

一般用del,如果过于庞大用unlink

Hash:

使用hscan每次获取少量field-value,再使用hdel删除每个field

list:

使用ltrim渐进式逐步删除

Set:

使用sscan每次获取少量元素,再使用srem删除每个元素

ZSet:

使用zscan每次获取少量元素,再使用zremrangebyrank删除每个元素

优化

开启惰性删除

lazyfree-lazy-server-del yes
replica-lazy-flush yes


lazyfree-lazy-user-del yes

 


http://www.kler.cn/a/292019.html

相关文章:

  • SQL面试题——抖音SQL面试题 最大在线用户数
  • 动手学深度学习73 课程总结和进阶学习
  • Android 6年经验面试总结 2024.11.15
  • 【大数据测试 Hive数据库--保姆级教程】
  • 无插件H5播放器EasyPlayer.js网页web无插件播放器选择全屏时,视频区域并没有全屏问题的解决方案
  • 密码学在网络安全中的应用
  • 【MySQL】主键优化原理篇——【数据组织方式&主键顺序插入&主键乱序插入&页分裂&页分裂】
  • 【Python机器学习】核心数、进程、线程、超线程、L1、L2、L3级缓存
  • 空气质量题数据处理与分析
  • 在元神操作系统中获取动态内存
  • HarmonyOS开发实战( Beta5版)AOT编译使用指南
  • 电脑知识:如何恢复 Word、媒体和存档文件?
  • 在线演示文稿应用PPTist本地化部署并实现无公网IP远程编辑PPT
  • 客户端时间和服务器时间的区别
  • GO环境安装
  • AIoTedge IoT平台替代网关、PLC和HMI,实现智慧农业大棚控制
  • opencv 实现两个图片的拼接去重功能
  • 【软件设计】常用设计模式--策略模式
  • linux中vim常用命令大全
  • IDEA Maven 源修改为国内阿里云镜像的正确方式
  • 如何衡量一个算法的好坏
  • netty-socketio和Socket.IO实现网页在线聊天功能
  • html 页面引入 vue 组件之 http-vue-loader.js
  • 2024 年高教社杯全国大学生数学建模竞赛题目-A 题 “板凳龙” 闹元宵
  • leetcode:3174 清除数字
  • OpenGL/GLUT实践:实现反弹运动的三角形动画与键盘控制(电子科技大学信软图形与动画Ⅱ实验)