Redis——BigKey问题

这篇具有很好参考价值的文章主要介绍了Redis——BigKey问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

MoreKey案例

测试数据

如何向redis数据库中一次性的插入100W条数据

如何将 100W条数据一次性写入redis数据库中

遍历百万、千万级别数据能否使用keys *?

生产上如何限制keys *、flushdb、flushall等危险命令?

不使用keys *使用什么遍历?

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

BigKey案例

多大算Big?

如何发现BigKey?

--Bigkeys命令

memory usage

 如何删除BigKey?

BigKey生产调优

MoreKey案例

测试数据

如何向redis数据库中一次性的插入100W条数据

生成100W条redis批量设置kv的语句(key=kn,value=vn)写入到/tmp目录下的redisTest.txt文件中

for((i=1;i<=100*10000;i++)); do echo "set k$i v$i" >> /tmp/redisTest.txt ;done;

如何将 100W条数据一次性写入redis数据库中

利用redis提供的管道命令 -pipe插入100W条数据

cat /tmp/redisTest.txt | redis-cli -h 本地主机 -p 端口号 -a 密码 --pipe

遍历百万、千万级别数据能否使用keys *?

key * 这个指令有致命的弊端,在实际环境中最好不要使用

keys*这个指令相当于一次性吐出所有key,由于redis是单线程的,所有的操作都是原子性的,keys算法属于遍历算法,时间复杂度是O(n),在实际生产环境中如果执行该指令,可能会导致redis服务卡顿,更严重的可能会导致redis缓存雪崩或者数据库宕机宕机

生产上如何限制keys *、flushdb、flushall等危险命令?

通过修改redis.conf配置文件

Redis——BigKey问题

 (ps:记得重启redis)

(pps:如果aof及rdb文件中包含了禁用掉的命令,redis会启动失败,需要删除对应aof及rdb文件)

不使用keys *使用什么遍历?

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

Redis——BigKey问题 语法:

SCAN cursor [MATCH pattern] [COUNT count]

-cursor:游标

-pattern:匹配的模式

-count:指定从数据集中返回多少元素,默认为10

BigKey案例

大key问题本质上是key对应的value大

多大算Big?

--String是value,最大512M但是超过10kb就是BigKey

--list、set、hash、zset个数超过5000就算是BigKey

如何发现BigKey?

--Bigkeys命令

redis-cli -h 本地主机名 -p 端口号 -a 密码  --bigkeys

给出每种数据结构Top 1 bigkey,同时给出每种数据类型的键值个数+平均大小,但不能查询到大于10kb的所有key

memory usage

Redis——BigKey问题

 memory usage key

 如何删除BigKey?

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

Redis——BigKey问题

BigKey生产调优

redis.conf优化配置

Redis——BigKey问题文章来源地址https://www.toymoban.com/news/detail-426350.html

到了这里,关于Redis——BigKey问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis中的BigKey相关问题

    bigkey是指key对应的value所占用的内存空间比较大。例如一个字符串类型的value可以最大存到512MB,一个列表类型的value最多可以存储2^32-1个元素。如果按照数据结构来细分的话,一般分为字符串类型bigkey和非字符串类型bigkey。 字符串类型:体现在单个value值很大,一般认为超过

    2024年01月20日
    浏览(39)
  • 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通常用来描述存储大量数据的键。

    2024年01月15日
    浏览(38)
  • 第十三章_Redis中的BigKey

    MoreKey案例 大批量往redis里面插入2000W测试数据key  Linux Bash下面执行,插入100W # 生成100W条redis批量设置kv的语句(key=kn,value=vn)写入到/tmp目录下的redisTest.txt文件中 for((i=1;i=100*10000;i++)); do echo \\\"set k$i v$i\\\" /tmp/redisTest.txt ;done; 通过redis提供的管道--pipe命令插入100W大批量数据 结合自己

    2024年02月03日
    浏览(45)
  • 2023-06-21:redis中什么是BigKey?该如何解决?

    2023-06-21:redis中什么是BigKey?该如何解决? 答案2023-06-21: 什么是bigkey bigkey是指存储在Key-Value数据库中的键对应的值所占用的内存空间较大。举个例子,如果值是字符串类型,它可以达到最大512MB的存储空间;如果值是列表类型,最多可以存储 2^32 - 1 个元素,即 4294967295 个元

    2024年02月10日
    浏览(41)
  • 性能测试分析案例-定位redis响应延迟

    预先安装 docker、sysstat 、git、make 等工具,如 apt install docker.io sysstat 案例由 Python 应用 +Redis 两部分组成。其中,Python 应用是一个基于 Flask 的应用,它会利用 Redis ,来管理应用程序的缓存,并对外提供三个 HTTP 接口: /:返回 hello redis; /init/:插入指定数量的缓存数据,如果

    2024年01月16日
    浏览(47)
  • Python 教学 | Pandas 数据合并(含目录文件合并案例)

    目录 Part  1前言 Part2  Pandas 数据合并函数 1  df.append() 实现数据追加 (1)向表中追加相同结构的表 (2)向表中追加不同结构的表 (3)向数据中添加一行 2  pd.concat() 实现数据连接 (1)多个相同结构数据纵向合并 (2)多个结构不同的数据纵向合并 (3)多个数据横向合并

    2024年01月17日
    浏览(60)
  • Redis精品小案例:Redis支持五种基本数据类型及案例解析

    Redis支持五种基本数据类型,分别是:string(字符串)、hash(哈希)、list(列表)、set(集合)及zset(sorted set:有序集合)。以下是这些数据类型及其用法的简要说明: String(字符串) : 是Redis最基本的数据类型,你可以理解为与Memcached一模一样的类型,一个key对应一个va

    2024年04月08日
    浏览(41)
  • JMeter压力测试案例(商品超卖并发问题)

    压力测试可以用来验证软件系统的稳定性和可靠性,在压力下测试系统的性能和稳定性,发现并解决潜在的问题,确保系统在高负载情况下不会崩溃。 压力测试可以用来评估软件系统的容量和性能,通过模拟高负载情况下的用户访问量和数据量,测试系统的处理能力和响应速

    2024年02月05日
    浏览(40)
  • 【征服redis1】基础数据类型详解和应用案例

    博客计划 ,我们从redis开始,主要是因为这一块内容的重要性不亚于数据库,但是很多人往往对redis的问题感到陌生,所以我们先来研究一下。 本篇,我们先看一下redis的基础数据类型详解和应用案例。 以mysql为代表的数据库,相信很多人都非常熟悉,这是数据持久化存储的

    2024年01月17日
    浏览(39)
  • MySQL与Redis数据双写一致性工程落地案例

    多个线程同时去查询数据库的这条数据,那么我们可以在第一个查询数据的请求上使用一个 互斥锁来锁住它。 其他的线程走到这一步拿不到锁就等着,等第一个线程查询到了数据,然后做缓存。 后面的线程进来发现已经有缓存了,就直接走缓存。   canal [kə\\\'næl],中文翻译

    2024年02月03日
    浏览(92)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包