Redis之bigkey

目录

1、什么是bigkey?

2、bigkey大的小

3、bigkey有哪些危害?

4、bigkey如何产生?

5、bigkey如何发现?

6、bigkey如何删除?

7、BigKey调优,惰性释放lazyfree

8、生产上限制keys * /flushdb/flushall等危险命令防止误删误用

9、SCAN命令


1、什么是bigkey?

bigkey通常用来描述存储大量数据的键。 

2、bigkey大的小

根据《阿里云Redis开发规范》string类型大于10KB就是bigkey,list、hash、set和zset,个数超过

5000就是bigkey

3、bigkey有哪些危害?

  1. 内存消耗:大键占用更多的内存空间。由于Redis是一个基于内存的数据库,过多的大键可能导致内存不足或增加运行成本。

  2. 网络传输延迟:当从Redis服务器读取或写入大键时,需要更多的时间和网络带宽来传输数据。这可能会导致响应时间延长,影响性能。

  3. 数据处理效率降低:对大键进行读写操作可能会导致Redis服务器的处理速度变慢,因为它需要花费更多的时间来处理大量的数据。

  4. 持久化备份问题:如果你使用了持久化功能(如RDB快照或AOF日志),大键会增加备份和恢复的时间和存储空间。

  5. 缓存失效问题:如果大键被频繁更新,可能会导致与该键相关的其他缓存项失效,影响缓存系统的效率。

4、bigkey如何产生?

社交类,统计类数据会造成bigkey

5、bigkey如何发现?

1、redis-cli --bigkeys

redis-cli -h 127.0.0.1 -p 6379 -a 111111 -bigkeys

2、MEMORY USAGE

MEMORY USAGE key

MEMORY USAGE是Redis提供的一个命令,用于获取指定键所占用的内存大小。执行该命令后,Redis会返回一个整数值,表示该键占用的内存大小(以字节为单位)。如果键不存在,命令会返回0。

注意:

  1. MEMORY USAGE命令只能用于检查指定键的内存使用情况,无法一次性获取所有键的内存使用情况。

  2. Redis使用了一些特殊的算法来最小化内存的使用,因此实际占用的内存大小可能会比预期小。

  3. 当使用Redis Cluster等分布式环境时,MEMORY USAGE命令只能用于检查本地节点的键的内存使用情况,无法检查整个集群的内存使用情况。

6、bigkey如何删除?

string类型:一般用del,如果过于庞大unlink

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

 list类型:使用ltrim渐进式逐步删除,直到全部删除完成

set类型:使用sscan每次获取部分元素,再使用srem命令删除每个元素

zset类型:使用zscan每次获取部分元素,再使用ZREMRANGEBYRANK命令删除每个元素

7、BigKey调优,惰性释放lazyfree

打开redis.conf配置文件LAZY FREEING相关说明

 

1、lazyfree-lazy-server-del no: 这个选项用于控制Redis服务器删除键时的行为。当设置lazyfree-lazy-server-del选项为no时,服务器会立即删除键,而不延迟删除操作。

2、replica-lazy-flush no: 这个选项用于控制主节点执行FLUSHALL或FLUSHDB命令时是否传播给从节点。当设置了replica-lazy-flush选项为no时,主节点执行这些命令后会将其传播给从节点,使得从节点也执行相同的操作。

3、lazyfree-lazy-user-del no: 这个选项用于控制Redis服务器删除键时的行为,与lazyfree-lazy-server-del选项类似。当设置了lazyfree-lazy-user-del选项为no时,服务器会立即删除键,而不延迟删除操作。

8、生产上限制keys * /flushdb/flushall等危险命令防止误删误用

通过配置设置禁用这些命令,redis.conf在SECURITY这一项中

9、SCAN命令

Redis的SCAN命令用于迭代遍历Redis中的键。它允许逐批返回与指定模式匹配的键。执行SCAN命令后,Redis会返回两个值:下一个迭代器位置和匹配的键列表。

SCAN cursor [MATCH pattern] [COUNT count]
  • cursor:表示迭代器的起始位置。初始时,cursor值设置为0。
  • MATCH pattern(可选):用于指定要匹配的键模式。只有与模式匹配的键才会被返回。
  • COUNT count(可选):指定每次迭代返回的键的数量。默认情况下,Redis会尽量返回所有匹配的键。

 示例:

redis 127.0.0.1:6379> scan 0
1) "17"
2)  1) "key:12"2) "key:8"3) "key:4"4) "key:14"5) "key:16"6) "key:17"7) "key:15"8) "key:10"9) "key:3"10) "key:7"11) "key:1"
redis 127.0.0.1:6379> scan 17
1) "0"
2) 1) "key:5"2) "key:18"3) "key:0"4) "key:2"5) "key:19"6) "key:13"7) "key:6"8) "key:9"9) "key:11"

SCAN返回一个包含两个元素的数组

第一个元素是用于进行下一次迭代的新游标。

第二个元素则是一个数组,这个数组中包含了所有被迭代的元素。如果新游标返回零表示迭代已结束。 

SCAN的遍历顺序:它不是从第一维数组的第零位一直遍历到末尾,而是采用了高位进位加法来遍

历。是为了在字典的扩容和缩容时避免槽位的遍历重复和遗漏。

注意:由于Redis是单线程的,当执行SCAN命令时,Redis服务器可能会阻塞一段时间,直到迭代完成。因此,在处理大型数据库时,建议使用SCAN命令进行分批处理,以避免对服务器性能造成影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/624977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用WAF防御网络上的隐蔽威胁之CSRF攻击

在网络安全领域,除了常见的XSS(跨站脚本)攻击外,CSRF(跨站请求伪造)攻击也是一种常见且危险的威胁。这种攻击利用用户已经验证的身份在没有用户知情的情况下,执行非授权的操作。了解CSRF攻击的机…

2.3数据链路层01

2.3数据链路层 2.3.1数据链路层概述 1、数据链路层在网络体系结构中所处的地位 如下图所示:主机H1给主机H2发送数据,中间要经过三个路由器、电话网、局域网、广域网等多种网络。 从五层协议原理体系结构的角度来看,主机应该具有体系结构中…

数据结构初阶之插入排序与希尔排序详解

个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 Linux 欢迎大家点赞,评论,收藏。 一起努力,共赴大厂。 目录 一.前言 二.插入排序 …

深入浅出Pytorch宝典1.0

文章目录 前言1. 张量操作2. 自动微分3. 数据加载和处理4. 模型构建和训练5. 预训练模型和迁移学习6. 调试和性能7. 高级特性总结 torch中主要的数据对象主要特点和功能张量的创建 数据处理和转换1.torch.tensor() 创建一个新的张量(Tensor)2.torch.zero…

YOLOv8训练自己的数据集

文章目录 1. 创建数据集文件结构数据集标注脚本分割数据集转换数据格式 2. 配置文件2.1 数据集配置2.2 选择需要的模型 3. 模型训练4. 测试 1. 创建数据集 环境: Ultralytics YOLOv8.0.230 🚀 Python-3.8.18 torch-2.3.0.dev20231226cu118 CUDA:0 (NVIDI…

【DDR】基于Verilog的DDR控制器的简单实现(三)——读操作

上一节 【DDR】基于Verilog的DDR控制器的简单实现(二)——写操作 本文继续以美光(Micron)公司生产的DDR3芯片MT41J512M8RH-093(芯片手册)为例,说明DDR芯片的读操作过程。下图为读操作指令格式(…

市场复盘总结 20240115

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 昨日主题投资 连板进级率 0% 失效 二进三: 进级率 中位数50% 最常用的二种方法: 方…

记录centos7.9 离线安装fastllm 编译遇到的问题

centos7.9 安装fastllm 编译步骤 Step1安装cmake: 参考: https://bitsanddragons.wordpress.com/2022/09/19/error-cmake-3-1-or-higher-is-required-you-are-running-version-on-centos-7-x/ ​ 问题1:/lib64/libstdc.so.6: version GLIBCXX_3.4.20‘ not found …

解决Qt的release构建下无法进入断点调试的问题

在工作的时候遇到了第三方库只提供release版本的库的情况,我需要在这基础上封装一层自家库,在调试的时候遇到如下问题,但是在Qt环境下,release的库只能在进行release构建和调试。 卡在了一直进不了断点的情况。提示内容如下&#…

数据库知识汇总之MySQL

目录 MySQL数据库特点MySQL下载MySQL配置文件初始化MySQL配置安装MySQL服务 启动MySQL服务登录数据库修改数据库登录密码MySQL错误代码1130 MySQL数据库特点 MySQL是一个开源关系型数据库管理系统(RDBMS),由Oracle公司维护和开发。它使用SQL语言进行数据库管理和操…

【LeetCode题目详解】59. 螺旋矩阵 II 54. 螺旋矩阵 LCR 146. 螺旋遍历二维数组(c++)

这篇文章的题目稍微难一点 题目建议: 本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。 一、59. 螺旋矩阵 II 题目: 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按…

DataX的安装使用

DataX概述: DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、HDFS、Hive、OceanBase、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。DataX采用了框架 插件 的模式,目前已开源,代…

如何用GPT制作PPT和写代码?

详情点击链接:如何用GPT制作PPT和写模型代码? 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析,AI画图,图像识别,文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2二定…

【Docker】快速入门之Docker的安装及使用

一、引言 1、什么是Docker Docker是一个开源的应用容器引擎,它让开发者可以将他们的应用及其依赖打包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之…

软件测试|使用pillow给图片添加水印

简介 水印是一种在图片上添加文字或图像的技术,用于标识图片的来源、版权信息或其他附加信息。Pillow 是一个强大的 Python 图像处理库,它提供了许多功能,包括给图片添加水印。本文将详细介绍如何使用 Pillow 给图片添加水印。 创建水印 在…

SpringBoot中整合ElasticSearch快速入门以及踩坑记录

场景 若依前后端分离版手把手教你本地搭建环境并运行项目: 若依前后端分离版手把手教你本地搭建环境并运行项目_本地运行若依前后端分离-CSDN博客 参考上面搭建项目。 ElaticSearch Elasticsearch 是java开发的,基于 Lucene 的搜索引擎。它提供了一…

Android perfetto memory开源工具分析

目录 原理 官网链接 下载heap_profile producer_support.cc 本地编译 push heapprofd 工具使用 pb文件获取 打开*.pb文件 trace文件 提高系统CPU性能 拆解特定函数内存占用 环境配置 工具使用 修改heap_profile 脚本 原理 Android perfetto memory分析工具和ma…

QT图表-折线图、曲线图

时间记录:2024/1/15 一、使用步骤 1.添加图表模块 .pro项目管理文件中添加charts模块 QChart类:图表类 QChartView类:图表显示类 2.ui文件中添加QChartView组件 (1)选择一个QGrapicsView组件将其拖拽到ui界面上合适位…

pandas查看数据常用方法(以excel为例)

目录 1.查看指定行数的数据head() 2. 查看数据表头columns 3.查看索引index 4.指定索引列index_col 5.按照索引排序 6.按照数据列排序sort_values() 7.查看每列数据类型dtypes 8.查看指定行列数据loc 9.查看数据是否为空isnull() 1.查看指定行数的数据head() &#xff…

二分图带权最大匹配-KM算法详解

文章目录 零、前言一、红娘再牵线二、二分图带权最大完备匹配2.1二分图带权最大匹配2.2概念2.3KM算法2.3.1交错树2.3.2顶标2.3.3相等子图2.3.4算法原理2.3.5算法实现 三、OJ练习3.1奔小康赚大钱3.2Ants 零、前言 关于二分图:二分图及染色法判定-CSDN博客 关于二分…