首页 > 数据库 >Redis服务端优化

Redis服务端优化

时间:2023-11-11 22:01:51浏览次数:39  
标签:配置 Redis 查询 集群 内存 缓冲区 优化 服务端

持久化配置

Redis的持久化虽然可以保证数据安全,但也会带来很多额外的开销,因此持久化请遵循下列建议:

①用来做缓存的Redis实例尽 量不要开启持久化功能

②建议关闭RDB持久化功能,使用AOF持久化

③利用脚本定期在slave节点做RDB,实现数据备份

④设置合理的rewrite阈值,避免频繁的bgrewrite

⑤配置no-appendfsync-on-rewrite = yes,禁止在rewrite期间做aof,避免因AOF引起的阻塞

Redis服务端优化_慢查询

部署有关建议:

①Redis实例的物理机要预留足够内存,应对fork和rewrite

②单个Redis实例内存 上限不要太大,例如4G或8G。可以加快fork的速度、减少主从同步、数据迁移压力

③不要与CPU密集型应用部署在一-起

④不要与高硬盘负载应用一起部署。例如:数据库、消息队列

慢查询

慢查询:在Redis执行时耗时超过某个阈值的命令,称为慢查询。

Redis服务端优化_Redis_02

慢查询的阈值可以通过配置指定:

●slowlog-log-slower-than: 慢查询阈值,单:位 是微秒。默认是10000,建议1000

慢查询会被放入慢查询日志中,日志的长度有上限,可以通过配置指定:

●slowlog-max-len: 慢查询日志(本质是一个队列)的长度。默认是128,建议1000

Redis服务端优化_Redis_03

修改这两个配置可以使用: config set命令:

Redis服务端优化_Redis_04

查看慢查询日志列表:

●slowlog len:查询慢查询日志长度

●slowlog get [n]:读取n条慢查询日志

●slowlog reset:清空慢查询列表

Redis服务端优化_慢查询_05

命令及安全配置

Redis会绑定在0.0.0.0:6379,这样将会将Redis服务暴露到公网上,而Redis如果没有做身份认证,会出现严重的安全漏洞.

漏洞重现方式: https://cloud.tencent.com/developer/article/1039000

漏洞出现的核心的原因有以下几点:

●Redis未设置密码

●利用了Redis的config set命令动态修改Redis配置

●使用了Root账号权限启动Redis


为了避免这样的漏洞,这里给出一些建议:

①Redis一定要设置密码

②禁止线上使用下面命令: keys、flushall flushdb、config set等命令。可以利用rename-command禁用。

③bind: 限制网卡,禁止外网网卡访问

Redis服务端优化_慢查询_06

④开启防火墙

⑤不要使用Root账户启动Redis

⑥尽量不使用默认的端口


内存配置

当Redis内存不足时,可能导致Key频繁被删除、响应时间变长、QPS不稳定等问题。当内存使用率达到90%以上时就需要我们警惕,并快速定位到内存占用的原因。

Redis服务端优化_持久化_07

Redis提供了一些命令,可以查看到Redis目前的内存分配状态:

●info memory

●memory xxx

Redis服务端优化_Redis优化_08

内存缓冲区配置

内存缓冲区常见的有三种:

●复制缓冲区: 主从复制的repL backlog_ buf, 如果太小可能导致频繁的全量复制,影响性能。通过repl-backlog-size来设置,默认1mb

●AOF缓冲区: AOF刷盘之前的缓存区域, AOF执行rewrite的缓冲区。无法设置容量上限

●客户端缓冲区:分为输入缓冲区和输出缓冲区,输入缓冲区最大1G且不能设置。输出缓冲区可以设置

Redis服务端优化_慢查询_09

默认的配置如下:

Redis服务端优化_慢查询_10

集群最佳实践

集群虽然具备高可用特性,能实现自动故障恢复,但是如果使用不当,也会存在一些问题:

①集群完整性问题

在Redis的默认配置中,如果发现任意一个插槽不可用,则整个集群都会停止对外服务:

Redis服务端优化_慢查询_11

为了保证高可用特性,这里建议将cluster-require-full-coverage配置为false

②集群带宽问题

●集群状态信息

集群中节点越多,集群状态信息数据量也越大,10个节点的相关信息可能达到1 kb,此时每次集群互通需要的带宽会非常高。

解决途径:

①避免大集群,集群节点数不要太多最好少于1000,如果业务庞大,则建立多个集群。

②避免在单个物理机中运行太多Redis实例

③配置合适的cluster-node-timeout值

③数据倾斜问题

④客户端性能问题

⑤命令的集群兼容性问题

⑥lua和事务问题

注意

单体Redis (主从Redis) 已经能达到万级别的QPS,并且也具备很强的高可用特性。如果主从能

满足业务需求的情况下,尽量不搭建Redis集群。



标签:配置,Redis,查询,集群,内存,缓冲区,优化,服务端
From: https://blog.51cto.com/AmbitionGarden/8320620

相关文章

  • Spark优化
    意识篇类型转换优化前:valextractFields:Seq[Row]=>Seq[(String,Int)]={(rows:Seq[Row])=>{varfields=Seq[(String,Int)]()rows.map(row=>{fields=fields:+(row.getString(2),row.getInt(4))}) fields}}优化后:valextr......
  • Nest + Redis + 地图,实现附近的充电宝
    想必大家都打过车,打车软件可以根据你的当前位置搜索附近的车辆:这两天国庆节,大家出去玩可能会借用共享充电宝。它也是基于你的位置来搜索附近充电宝:再就是大家搜索附近的酒店、餐厅等,也是基于位置的搜索。那么问题来了:这种附近的人、附近的酒店、附近的充电宝的功能是怎么实现的呢?答......
  • 11 11 vue3代码优化
     使用axios发送异步请求是这种格式,现在异步请求都封装到api中。说法如下:接口调用的js代码一般都会封装到js文件中,并一函数的形式暴露给外部,例如: 这张图片包括了没有参数和有参数的两种情况 然后在组件中的script中调用函数就行,但这样不行,好像跟什么同步异步有关,反正这样......
  • Redis6.0使用多线程是怎么回事?
    Redis不是说用单线程的吗?怎么6.0成了多线程的?Redis6.0的多线程是用多线程来处理数据的读写和协议解析,但是Redis执行命令还是单线程的。这样做的⽬的是因为Redis的性能瓶颈在于⽹络IO⽽⾮CPU,使⽤多线程能提升IO读写的效率,从⽽整体提⾼Redis的性能。为什么命令执行为什么不采用多线......
  • Matlab代码优化之道
    ​ 一、遵守PerformanceAcceleration的规则关于什么是“PerformanceAcceleration”请参阅matlab的帮助文件。1、只有使用以下数据类型,matlab才会对其加速:logical,char,int8,uint8,int16,uint16,int32,uint32,double而语句中如果使用了非以上的数据类型则不会加速,如numeric......
  • pyqt5-自定义函数优化管理组件
    1、介绍pyqt本身提供了诸多的方法和事件特性,可以操作ui组件。对于单一的项目或者说具有个人风格的开发者来说,在此基础上进行整合可以优化代码。整合,这里特指的是ui组件。可能是ui的显示和初始化,也可能是相关的业务代码。2、测试和总结函数中的ui组件可以调用设置值或获取的......
  • 读程序员的制胜技笔记09_死磕优化(下)
    1. 造成延迟的3个方面1.1. CPU1.2. I/O1.3. 人2. 不要打包数据2.1. 一个打包的数据结构2.1.1. C#structUserPreferences{publicbyteItemsPerPage;publicbyteNumberOfItemsOnTheHomepage;publicbyteNumberOfAdClicksICanStomach;publicbyteM......
  • 索引优化百万数据量
    --新建一个查询,复制以下语句,执行即可。通过存储过程创建100万数据CREATETABLE`test_user_memory`(`id`int(11)NOTNULLAUTO_INCREMENTcomment'主键id',`user_id`varchar(36)NOTNULLcomment'用户id',`user_name`varchar(30)NOTNULLcomment'用户名称',`phon......
  • redis系列~通用基础知识
    Redis为什么这么快完全基于内存操作使⽤单线程,避免了线程切换和竞态产生的消耗基于⾮阻塞的IO多路复⽤机制C语⾔实现,优化过的数据结构,基于⼏种基础的数据结构,redis做了⼤量的优化,性能极⾼IO多路复用机制讲解,I/O多路复用是指利用单个线程来同时监听多个Socket,并在某个Socket......
  • 阿里云Ubuntu服务器优化
    阿里云Ubuntu服务器优化有台自用的阿里云测试服务器,最便宜的那种2核2G¥99/年,装的ubuntu22.04.之前用着感觉还行,最近几天使用vscodessh修改调试,搞了一段时间就不行,cpu和内存飙升至96%以上...之后就是各种反应迟钝,无法编译....太便宜了,提交工单都不好意思装个htop看了下,vscode......