别把这些 Redis 操作写到生产环境
2023-07-07 21:51:11 程序猿阿嘴

软件工程师在开发前要提前注意规避对 Redis 性能有影响的操作,避免走“先污染后治理”的老路。如下是整理出来6条会导致 Redis 性能下降的原因,尽量避免这些操作出现在生产环境中。

1. 大键和大值


(资料图片)

存储大键或大值可能会消耗更多的内存,并且在 Redis 进行网络和磁盘 I/O 操作时可能会增加延迟。

创建一个大键和大值:

redis复制代码SET bigkey "a".repeat(5242880)  # 创建一个5MB的大值

2. 阻塞操作

某些 Redis 命令,如 BLPOP、BRPOP、BRPOPLPUSH,可能会阻塞 Redis 进程。同样,Lua 脚本执行时间过长也可能导致阻塞。

如下 BLPOP 操作会阻塞 Redis 直到有元素被推入列表或者超时:

redis复制代码BLPOP mylist 0  # 0表示无限期等待

3. 过期键的处理

如果有大量的键同时过期,Redis 的性能可能会受到影响,因为 Redis 需要在后台清理这些过期的键。

创建一个大量即将过期的键:

redis复制代码for i in range(100000):    EXPIRE key{i} 10  # 10秒后过期

4. 持久化

Redis 提供了两种持久化选项——RDB 和 AOF。RDB 是将当前进程数据生成快照保存的方式,而 AOF 是记录服务器收到的每一条写命令。频繁的持久化操作可能会增加磁盘 I/O 负载,从而影响性能。

启用 AOF 持久化并配置为每次有数据修改都立即写入磁盘(可能会影响性能):

redis复制代码CONFIG SET appendonly yesCONFIG SET appendfsync always

5. 使用复杂度高的命令

像 KEYS、SMEMBERS 或 HGETALL 这样的命令可能需要扫描整个集合,当数据集大时,它们可能会导致 Redis 暂时停止处理其他请求。

如 KEYS 命令,它会扫描整个键空间:

redis复制代码KEYS *

6. 内存使用过高

如果 Redis 服务器的内存使用接近或达到了其最大值,性能可能会受到影响。此外,如果你的数据集大于可用内存,那么操作系统可能会开始进行分页,这会大大降低 Redis 的性能。

使用 INFO memory 命令可以查看 Redis 的内存使用情况:

redis复制代码INFO memory

作者:Light_Tree 链接:/post/7248286946573205565

热门推荐

文章排行

  1. 2023-07-07别把这些 Redis 操作写到生产环境
  2. 2023-07-077月7日福建金纶高纤涤纶短纤价格上调
  3. 2023-07-07中超-陈哲超破僵局杨一虎建功 10人成都1-3梅州遭两连败
  4. 2023-07-07时间的秩序电子书下载(时间的秩序读后感)
  5. 2023-07-07北京发布雷电蓝色预警!局地雷雨云团+8级左右大风
  6. 2023-07-07三个月宣布80亿投资 华东重机跨界光伏自救
  7. 2023-07-07《命运方舟》魔方入场券怎么获得?魔方入场券获取攻略
  8. 2023-07-07注意!四川这25个县(市、区)可能发生山洪灾害
  9. 2023-07-07V观财报|中国中免上半年营增利减 股价年内近腰斩
  10. 2023-07-07饿了么APP上线全能超市
  11. 2023-07-07北京今年首批老旧小区改造名单公布,涉及这些小区
  12. 2023-07-07北京市国防科学技术工业办公室关于开展征集《国防科技工业知识产权转化目录(第九批)》项目信息的通知
  13. 2023-07-07女子自述“新冠5阳后依然活蹦乱跳”,专家回应
  14. 2023-07-07国联水产:公司工厂冷库以自建为主 公司的中心仓、前置仓冷库以租用为主
  15. 2023-07-07太极集团: 公司严格按照《上海证券交易所股票上市规则》的规定履行信息披露义务
  16. 2023-07-07投资者仍担忧银行业健康状况 美国银行股走低
  17. 2023-07-072023苏州太湖国家湿地公园夜游指南
  18. 2023-07-076月我国外汇储备规模为31930亿美元
  19. 2023-07-07科大讯飞与华为宣布大模型合作:讯飞星火与昇腾AI联合打造通用智能新底座
  20. 2023-07-07通用汽车:旗下新能源车第二季度在华销量创历年同期新高