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

Redis7高级之BigKey(二)

1.MoreKey案例

  • 往redis里面插入大量测试数据key

    • 生成100W条redis批量设置kv的语句保存在redisTest.txt
    for((i=1;i<=100*10000;i++)); do echo "set k$i v$i" >> /tmp/redisTest.txt ;done;
    # 生成100W条redis批量设置kv的语句(key=kn,value=vn)写入到/tmp目录下的redisTest.txt文件中
    
    • 通过redis管道的–pipe命令插入100W大批量数据

      cat /tmp/redisTest.txt | redis-cli -h 127.0.0.1 -p 6379 -a 123456 --pipe
      

      在这里插入图片描述

      通过redis-cli登录查看是否成功
      在这里插入图片描述

  • keys * / flushall / flushdb 危险命令

    • keys * / flushall / flushdb 严禁 在线上使用

    • keys * / flushall / flushdb 会造成阻塞,会导致Redis其他的读写都被延后甚至是超时报错,可能会引起缓存雪崩甚至数据库宕机

    • 通过配置禁用危险命令

      在这里插入图片描述

      在这里插入图片描述

  • *scan 命令代替 keys ,避免卡顿

    • 语法

    在这里插入图片描述

    • 特点

      在这里插入图片描述

      • SCAN 命令是一个基于游标的迭代器,每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。
      • SCAN 返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标, 第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。如果新游标返回零表示迭代已结束。
      • SCAN的遍历顺序非常特别,它不是从第一维数组的第零位一直遍历到末尾,而是采用了高位进位加法来遍历。之所以使用这样特殊的方式进行遍历,是考虑到字典的扩容和缩容时避免槽位的遍历重复和遗漏。
    • 使用

    在这里插入图片描述

2.BigKey案例

2.1 多大算 BigKey以及它的危害

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

在这里插入图片描述

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

危害

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

2.2 如何产生、发现、删除

产生

  1. 社交类

    粉丝列表逐步递增

  2. 汇总统计

    某个报表,经年累月的积累

发现

  • 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
      

      在这里插入图片描述

    • 好处

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

      • 想查询大于10kb的所有key,–bigkeys参数就无能为力了,需要用到memory usage来计算每个键值的字节数
  • memory usage

    • 计算每个键值的字节数

      在这里插入图片描述

    -在这里插入图片描述

删除bigkey

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

    在这里插入图片描述

  • 普通命令

    • String

      • 一般用del,过于庞大 unlink
    • hash

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

      • 语法

        在这里插入图片描述

      • 阿里手册

        在这里插入图片描述

    • list

      • 使用 ltrim 渐进式逐步删除,直到全部删除

      • 命令

      在这里插入图片描述

      • 阿里手册

        在这里插入图片描述

    • set

      • 使用sscan 每次获取部分元素,再使用 srem 命令删除每个元素

      • 命令

        在这里插入图片描述

      • 阿里手册

        在这里插入图片描述

    • zset

      • 使用zscan每次获取部分元素,再使用ZREMRANGEBYRANK 命令删除每个元素

      • 命令

      在这里插入图片描述

      • 阿里手册

      在这里插入图片描述

3. bigKey生产调优

  • 阻塞和非阻塞删除命令

在这里插入图片描述

  • 优化配置

    在这里插入图片描述

相关文章:

Redis7高级之BigKey(二)

1.MoreKey案例 往redis里面插入大量测试数据key 生成100W条redis批量设置kv的语句保存在redisTest.txt for((i1;i<100*10000;i)); do echo "set k$i v$i" >> /tmp/redisTest.txt ;done; # 生成100W条redis批量设置kv的语句(keykn,valuevn)写入到/tmp目录下的…...

flex弹性盒子

概念 弹性盒子是一种用于按行或者按列布局的一维布局方法&#xff0c;元素可以膨胀以填充额外的空间&#xff0c;缩小以适应更小的空间 以下属性是给父元素添加的 1.flex-direction --改变轴的方向 row 默认值 默认沿着x轴排版(横向从左到右排列&#xff08;左对齐&#xff…...

[Java Web]Cookie | 一文详细介绍会话跟踪技术中的Cookie

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;Java Web 目录Cookie1、工作原理2、如何使用2.1、发送Cookie2.2、获取Cookie3、Cookie的存活时间4、中文错误Coo…...

这可能是2023最全的Java面试八股文,共计1658页,Java技术手册的天花板

前两天有个小伙伴在后台留言&#xff0c;最近的面试越来越难了&#xff0c;尤其是技术面&#xff0c;考察得越来越细&#xff0c;越来越底层&#xff0c;庆幸的是最终顺利找到了工作。 一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识 比如果这样的问题…...

字节流及存放本地文件上传和下载文件

前言 之前的文章有写过 vuespringboot使用文件流实现文件下载 实现如何通过 D:\file\文件名.文件格式的形式进行下载文件 但是它对于很多业务场景相对适用性不是很广泛。 以及 elementUI加springboot实现上传excel文件给后端并读取excel 也只能是通过elementui的元素类型进行…...

【翻译】下一步:Go 泛型

原文地址&#xff1a; The Next Step for Generics - The Go Blog https://blog.golang.org/generics-next-step 介绍 自从我们上次写下关于在Go中加入泛型的可能性的文章以来&#xff0c;已经快一年了。现在是该更新的时候了。 设计的更新 我们一直在继续完善泛型设计草案。…...

如何简单实现ELT?

在商业中&#xff0c;数据通常和业务、企业前景以及财务状况相关&#xff0c;有效的数据管理可以帮助决策者快速有效地从大量数据中分析出有价值的信息。数据集成(Data Integration)是整个数据管理流程中非常重要的一环&#xff0c;它是指将来自多个数据源的数据组合在一起&…...

细思极恐,第三方跟踪器正在获取你的数据,如何防范?

细思极恐&#xff0c;第三方跟踪器正在获取你的数据&#xff0c;如何防范&#xff1f; 当下&#xff0c;许多网站都存在一些Web表单&#xff0c;比如登录、注册、评论等操作需要表单。我们都知道&#xff0c;我们在冲浪时在网站上键入的数据会被第三方跟踪器收集。但是&#x…...

Java基础之==,equal的区别(温故而知新)-----点点滴滴的积累

1. 为运算符&#xff0c;equal 为String数据类型的比较方法&#xff1b;相同内容的对象地址不一定相同&#xff0c;但相相同地址的对象内容一定相同&#xff1b; 比较的是值是否相等&#xff0c;equal比较的是是否是同一个对象。 2.基本概念不同 1&#xff09;对于&#xff0c…...

SpringBoot项目使用切面编程实现数据权限管理

springBoot项目使用切面编程实现数据权限管理什么是数据权限管理如何实现数据权限管理什么是数据权限管理 不同用户在某页面看到数据不一致&#xff0c;实现每个用户之间数据隔离的效果。 如以下场景&#xff1a; ● 页面期望展示当前登录人所在部门的数据。 ● 页面期望展示当…...

亚马逊测评是做什么的,风险有哪些?

自养号测评顾名思义就是自己养国外的买家账号给自己店铺提升销量和评论&#xff0c;做过多年的跨境卖家都知道测评可以快速提高产品的排名、权重和销量&#xff0c;&#xff08;国内某宝一样的逻辑&#xff09;但随着测评需求日益增大&#xff0c;卖家在寻求真人测评时也很容易…...

安科瑞导轨式智能通讯管理机

安科瑞 李亚娜 一、概述 AWT200 数据通讯网关应用于各种终端设备的数据采集与数据分析。实现设备的监测、控制、计算&#xff0c;为系统与设备之间建立通讯纽带&#xff0c;实现双向的数据通讯。实时监测并及时发现异常数据&#xff0c;同时自身根据用户规则进行逻辑判断&…...

vs2010下 转换到 COFF 期间失败: 文件无效或损坏

因为同一个电脑上安装多个VS&#xff0c;有多个cvtres.exe。按照下面的操作如果还是不行就在C盘搜索cvtres.exe&#xff0c;然后挨个重命名&#xff0c;看看是调用的哪个&#xff0c;然后修改就可以了。 用VS2010编译C项目时出现这样的错误&#xff1a; LNK1123: 转换到 COFF …...

托福高频真词List19 // 附托福TPO阅读真题

目录 3.28单词 3.29真题​​​​​​​ 3.28单词 legitimately/properlyadv.正当地likewise/similarlyadv.同样地reveal/showv.揭示substantiate/confirmv.证实suppress/stop by forcev.镇压trend/tendencyn.趋势empirical/based on observationa.凭借经验的illuminate/li…...

Go语言项目标准结构应该如何组织的?

这里写自定义目录标题Go项目本身的目录结构Go语言项目典型目录结构GO语言项目最小标准目录结构可执行的Go语言项目目录结构库的Go语言项目目录结构关于internal目录总结参考文章每当我们写一个非hello world实用程序的Go程序或库时&#xff0c;我们都会在项目结构、代码风格和标…...

设计模式简介

设计模式简介 设计模式&#xff08;Design pattern&#xff09;代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错…...

#详细介绍!!! 线程池的拒绝策略(经典面试题)

本篇单独讲解线程池的拒绝策略&#xff0c;介绍了当线程池任务满了之后&#xff0c;线程池会以什么样的方式来响应添加进来的任务 目录 一&#xff1a;理解线程池拒绝策略的触发情况代码理解 二&#xff1a;线程池的四种常见的拒绝策略 1.ThreadPoolExecutor.AbortPolicy 2…...

正则表达式作业

利用正则表达式完成下面的操作: 一、不定项选择题 能够完全匹配字符串"(010)-62661617"和字符串"01062661617"的正则表达式包括&#xff08;A &#xff09; A. r"\(?\d{3}\)?-?\d{8}" B. r"[0-9()-]" C. r"[0-9(-)]*\d*&qu…...

《扬帆优配》交易拥挤度达历史极值 当前A股TMT板块性价比几何?

上周&#xff0c;A股商场企稳&#xff0c;但盘面风格分歧再度加深&#xff1a;很多资金涌入以ChatGPT、数字经济为代表的TMT板块&#xff0c;而新能源以及前期强势的“中字头”种类都呈现了回调。兴业证券计算显现&#xff0c;3月24日&#xff0c;TMT及电子板块的商场成交金额占…...

C/C++开发,无可避免的IO输入/输出(篇三).字符串流(内存流)IO处理

目录 一、字符串流 1.1 字符串流继承体系 1.2 字符串流本质-类模板std::basic_stringstream 1.3 字符串流缓冲-std::stringbuf 1.4 stringbuf与序列缓冲 1.5 字符串流的打开模式 二、字符串流的运用 2.1 格式转换是其拿手好戏 2.2 字符串流仅提供移动赋值 2.3 std::basic_str…...

n8n工作流模板大全:从入门到精通的自动化实战指南

1. 项目概述&#xff1a;一个为n8n用户准备的“万能工具箱” 如果你正在使用或者听说过n8n这个强大的工作流自动化工具&#xff0c;那你一定遇到过这样的时刻&#xff1a;面对一个空白的画布&#xff0c;知道n8n能帮你连接一切&#xff0c;但就是不知道从何下手&#xff0c;或…...

2026 最稳高薪副业 + 主业赛道,网络安全零基础系统学习大纲,实战项目 + 证书考取 + 求职面试一站式教程

网络空间安全建设刻不容缓&#xff0c;已成为国家安全建设的重中之重。 随着境内外敌对势力的大规模安全事件&#xff0c;《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地&#xff0c;网络安全产业从小众产业逐步发展成为国家…...

RK3568 Debian系统Docker安装与ARM64容器化部署实战指南

1. 项目概述与核心价值最近在折腾一块基于瑞芯微RK3568的开发板&#xff0c;想在上面跑一些服务&#xff0c;自然而然地就想到了Docker。毕竟&#xff0c;Docker带来的环境隔离和便捷部署&#xff0c;对于嵌入式开发和边缘计算场景来说&#xff0c;简直是“神器”。但当我真正动…...

BilibiliDown:专业级B站视频下载工具,高效构建个人媒体库

BilibiliDown&#xff1a;专业级B站视频下载工具&#xff0c;高效构建个人媒体库 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.co…...

三步快速解锁网盘高速下载:LinkSwift直链解析终极指南

三步快速解锁网盘高速下载&#xff1a;LinkSwift直链解析终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...

Notepad--终极指南:10个高效技巧掌握国产跨平台文本编辑器

Notepad--终极指南&#xff1a;10个高效技巧掌握国产跨平台文本编辑器 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器&#xff0c;目标是做中国人自己的编辑器&#xff0c;来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- …...

TCN实战避坑指南:从能源预测案例看超参数(kernel_size, dilation_base)怎么调才有效

TCN实战避坑指南&#xff1a;从能源预测案例看超参数调优的艺术 当你的TCN模型在能源预测任务中表现平平&#xff0c;先别急着换架构——很可能只是超参数没调对。上周我们团队刚用TCN完成了一个工业用电量预测项目&#xff0c;原始模型准确率只有72%&#xff0c;经过系统调参后…...

Windows构建工具终极指南:一键解决Node.js原生模块编译难题

Windows构建工具终极指南&#xff1a;一键解决Node.js原生模块编译难题 【免费下载链接】windows-build-tools :package: Install C Build Tools for Windows using npm 项目地址: https://gitcode.com/gh_mirrors/wi/windows-build-tools Windows-build-tools是一个专业…...

手把手教你用STM32F103驱动DS3231高精度时钟模块(附完整源码与避坑指南)

手把手教你用STM32F103驱动DS3231高精度时钟模块&#xff08;附完整源码与避坑指南&#xff09; 1. 硬件准备与连接 DS3231作为一款高精度实时时钟模块&#xff0c;其内部集成了温度补偿晶体振荡器(TCXO)&#xff0c;在-40C到85C范围内精度可达2ppm。与STM32F103的硬件连接主…...

AWPLC与AWTK MVVM实战:零代码实现嵌入式走马灯控制与界面开发

1. 项目概述与核心思路作为一名在嵌入式领域摸爬滚打了十多年的老工程师&#xff0c;我见过太多项目因为GUI开发和逻辑控制分离而陷入泥潭。前端UI要调&#xff0c;后端逻辑要改&#xff0c;两边工程师还得不断对齐接口&#xff0c;效率低下不说&#xff0c;出点bug排查起来更是…...