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

news/2024/9/19 0:54:30/ 标签: redis

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如何发现

rediscli_bigkeys_69">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.ppmy.cn/news/1519168.html

相关文章

数据结构:单向链表

目录 结构体 创建链表 插入链表 头插法 尾插法 遍历打印 更新链表指定节点 查找链表指定节点 删除链表指定节点 销毁链表 找到元素中间位置 找到链表倒数第k个节点 链表元素倒置 链表元素排序 冒泡排序 选择排序 链表 1.空间可以不连续,访问元素不…

日常积累史2

2024.08.27 1.每行固定只显示2个元素-css 方案1: .container1 {display: grid;grid-template-columns: repeat(2, 1fr); /* 设置两列,每列宽度相等 */ } .item1 {background: #0b9f00; }方案2: .container2 {display: flex;flex-wrap: wrap…

split对大文件(tar/tar.gz)文件进行分片及合并

文章目录 1、tar文件指定大小分片2、合并分片文件并解压 1、tar文件指定大小分片 split -b 4000M -d -a 3 cm-11.tar.gz cm-11.tar.gz.使用split命令,-b 4000M 表示设置每个分割包的大小,单位还是可以k -d "参数指定生成的分割包后缀为数字的形式 …

Django REST Framework(十九)权限

Django REST framework (DRF) 的权限认证涉及以下几个方面:全局权限配置、局部权限配置、自定义权限类、以及自定义认证类。以下是关于这些方面的详细说明: 1. 全局权限配置 在 Django 项目的配置文件 settings.py 中,可以全局配置 DRF 的权…

B+树的原理及实现

B树的原理及实现 一、引言 B树是一种基于B树的树形数据结构,它在数据库和文件系统的索引中有着广泛的应用。与B树相比,B树的所有数据记录都存储在叶节点上,并且增加了顺序访问的能力,这使得B树在处理大量数据时更加高效。 二、…

Python 爬虫爬取京东商品信息

Python 爬虫爬取京东商品信息 下面我将逐一解释每一部分的代码 导入库 from selenium import webdriver from selenium.webdriver.edge.service import Service from selenium.webdriver.edge.options import Options import time import random import csv from selenium.co…

学习大数据DAY43 Sqoop 安装,配置环境和使用

目录 sqoop 安装 配置 mysql sqoop 安装 sqoop 指令集 sqoop 使用 sqoop 创建 hive 表 sqoop 全量导入表 sqoop 增量导入表 sqoop 全量导出表 sqoop 分区表导入表 sqoop 分区表导出表 上机练习 sqoop 安装 配置 mysql create database test DEFAULT CHARACTER S…

农产品智慧物流系统论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱,出错率高,信息安全性差&#x…

python 实现一个简单的网页爬虫程序

最近在学习python,以下为网页爬虫代码,供参考 1、爬取指定网页的标题和所有的连接 2、并将这些信息保存到一个文件中。 前置:因使用到网页相关的功能,故需导入requests、BeautifulSoup 库来完成 #导入网页相关的库 import requ…

干货分享|分享一款高效的软件卸载神器 Geek Uninstaller

问题:卸载软件时,时常会留下残留文件和注册表。当遇到流氓软件,还常常卸载失败。 1.软件介绍 特点:高效快速,小巧便携。100% 免费 2.下载方法 官方下载网站:Geek Uninstaller - the best FREE uninstaller …

中锂天源锂电池:为卡车驻车空调提供高效、安全、持久的能源解决方案

随着我国运输行业的飞速发展,卡车司机对驾驶环境和行车舒适度的要求越来越高。在炎炎夏日或寒冷冬季,驻车空调已成为卡车司机的必需品。然而,传统驻车空调供电方式存在诸多问题,如电力不足、续航时间短等。为解决这一痛点&#xf…

Unet改进17:添加ShuffleAttention||减少冗余计算和同时存储访问

本文内容:在不同位置添加ShuffleAttention注意力机制 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 注意机制使神经网络能够准确地关注输入的所有相关元素,已成为提高深度神经网络性能的重要组成部分。在计算机视觉研究中广泛应用的注意机制主要有空间注…

ElasticSearch7.12.1详细安装

部署ElasticSearch docker安装 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络 创建网络 docker network create es-net 查看网络列表 docker network ls 获取镜像包 docker pull elasticsearch:7.12.1 运行 docker run -d \ -…

【扩散模型(七)】IP-Adapter 与 IP-Adapter Plus 的具体区别是什么?

系列文章目录 【扩散模型(二)】IP-Adapter 从条件分支的视角,快速理解相关的可控生成研究【扩散模型(三)】IP-Adapter 源码详解1-训练输入 介绍了训练代码中的 image prompt 的输入部分,即 img projection…

EXO:模型最终验证的地方;infer_tensor;step;MLXDynamicShardInferenceEngine

目录 EXO:模型最终验证的地方 EXO:infer_tensor EXO:step MXNet的 mx.array 类型是什么 NDArray优化了什么 1. 异步计算和内存优化 2. 高效的数学和线性代数运算 3. 稀疏数据支持 4. 自动化求导 举例说明 EXO:模型最终验证的地方 EXO:infer_tensor 这段代码定…

MariaDB 和 MySQL 版本关联

MariaDB 和 MySQL 是两个常用的关系型数据库管理系统(RDBMS),它们在很多方面非常相似,因为 MariaDB 是 MySQL 的一个分支。MariaDB 和 MySQL 之间的版本关联可以通过以下几个方面来理解: 1. 历史背景 MySQL: MySQL 是…

数学建模强化宝典(1)级比检验

前言 级比检验是灰色预测中一个重要的步骤,主要用于判断原始数据是否满足准指数规律,从而确定数据是否适合进行灰色预测分析。 一、级比检验的定义 级比检验是通过计算原始数据与其前一期数据的比值(即级比),并对级比进…

智普大模型API调用

接口 用python调用智普免费API接口的例子,写成函数, 类似于 def get_answer(prompt):url = http://34.132.32.68:8081/v1/chat/completionsheaders = {Content-Type: application/json,}data = {"model": "Qwen2-72B-int4","messages": [{&q…

强化学习——马尔可夫决策过程的理解

目录 一、马尔可夫决策过程1.策略2.状态价值函数3.动作价值函数4.贝尔曼期望方程 参考文献 一、马尔可夫决策过程 马尔可夫决策过程(MDP)是马尔可夫奖励过程(MRP)的扩展,它引入了“动作”这一外界的影响因素&#xff0…

vscode怎么改成黑色主题?

在Visual Studio Code(简称VS Code)中,将界面调整为黑色主题是一个简单的过程,可以通过几个步骤轻松完成。以下是详细的操作指南,涵盖了从基本设置到高级自定义化的不同方法。 通过用户设置更改主题 打开设置&#xf…