渠道网络大厦,四川seo,免费网站建设程序下载,企业手机网站建设案例目录
持久化配置
慢查询
什么是慢查询
如何查看慢查询
命令及安全配置
内存配置
集群优化 持久化配置
Redis的持久化虽然可以保证数据安全#xff0c;但也会带来很多额外的开销#xff0c;因此持久化请遵循下列建议#xff1a;
用来做缓存的Redis实例尽量不要开启持…目录
持久化配置
慢查询
什么是慢查询
如何查看慢查询
命令及安全配置
内存配置
集群优化 持久化配置
Redis的持久化虽然可以保证数据安全但也会带来很多额外的开销因此持久化请遵循下列建议
用来做缓存的Redis实例尽量不要开启持久化功能建议关闭RDB持久化功能使用AOF持久化利用脚本定期在slave节点做RDB实现数据备份设置合理的rewrite阈值避免频繁的bgrewrite配置no-appendfsync-on-rewrite yes禁止在rewrite期间做aof避免因AOF引起的阻塞
部署有关建议
Redis实例的物理机要预留足够内存应对fork和rewrite单个Redis实例内存上限不要太大例如4G或8G。可以加快fork的速度、减少主从同步、数据迁移压力不要与CPU密集型应用部署在一起不要与高硬盘负载应用一起部署。例如数据库、消息队列
慢查询
什么是慢查询
在Redis执行时耗时超过某个阈值的命令称为慢查询
慢查询的危害由于Redis是单线程的所以当客户端发出指令后它们都会进入到Redis底层的queue来执行如果此时有一些慢查询的数据就会导致大量请求阻塞从而引起报错 慢查询的阈值可以通过配置指定
slowlog-log-slower-than慢查询阈值单位是微秒。默认是10000建议1000
慢查询会被放入慢查询日志中日志的长度有上限可以通过配置指定
slowlog-max-len慢查询日志本质是一个队列的长度。默认是128建议1000 如何查看慢查询
查看慢查询日志列表
slowlog len查询慢查询日志长度slowlog get [n]读取n条慢查询日志slowlog reset清空慢查询列表 命令及安全配置
Redis会绑定在0.0.0.0:6379这样将会将Redis服务暴露到公网上而Redis如果没有做身份认证会出现严重的安全漏洞. 漏洞重现方式Redis未授权访问配合SSH key文件利用分析-腾讯云开发者社区-腾讯云
漏洞出现的核心原因
Redis未设置密码利用了Redis的config set命令动态修改Redis配置使用了Root账号权限启动Redis
建议
Redis一定要设置密码禁止线上使用下面命令keys、flushall、flushdb、config set等命令可以利用rename-command禁用bind限制网卡禁止外网网卡访问开启防火墙不要使用Root账户启动Redis尽量不是有默认的端口
内存配置
当Redis内存不足时可能导致Key频繁被删除、响应时间变长、QPS不稳定等问题当内存使用率达到90%以上时就需要我们警惕并快速定位到内存占用的原因
内存占用说明数据内存是Redis最主要的部分存储Redis的键值信息。主要问题是BigKey问题、内存碎片问题进程内存Redis主进程本身运⾏肯定需要占⽤内存如代码、常量池等等这部分内存⼤约⼏兆在⼤多数⽣产环境中与Redis数据占⽤的内存相⽐可以忽略缓冲区内存一般包括客户端缓冲区、AOF缓冲区、复制缓冲区等。客户端缓冲区又包括输入缓冲区和输出缓冲区两种。这部分内存占用波动较大不当使用BigKey可能导致内存溢出
查看Redis目前的内存分配状态
info memory查看内存分配的情况memory xxx查看key的主要占用情况
内存缓冲区常见的有三种
复制缓冲区主从复制的repl_backlog_buf如果太小可能导致频繁的全量复制影响性能。通过replbacklog-size来设置默认1MBAOF缓冲区AOF刷盘之前的缓存区域AOF执行rewrite的缓冲区无法设置容量上限客户端缓冲区分为输入缓冲区和输出缓冲区输入缓冲区最大1G且不能设置输出缓冲区可以设置 默认配置没有上限
解决方案
设置一个大小增加带宽的大小避免出现大量数据从而直接超过了Redis的承受能力
集群优化
集群虽然具备高可用特性能实现自动故障恢复但是如果使用不当也会存在一些问题
集群完整性问题集群带宽问题数据倾斜问题客户端性能问题命令的集群兼容性问题lua和事务问题在集群模式无法执行lua和事务
问题1在Redis的默认配置中如果发现任意一个插槽不可用则整个集群都会停止对外服务
把如下配置修改成no即有slot不能使用时redis集群还是可以对外提供服务 问题2集群带宽问题
集群节点之间会不断互相Ping来确定集群中其它节点的状态每次Ping携带的信息至少包括
插槽信息集群状态信息
集群中节点越多集群状态信息数据量也越大10个节点的相关信息可能达到1kb此时每次集群互通需要的带宽会非常高
解决方案
避免大集群集群节点数不要太多最好少于1000如果业务庞大则建立多个集群。避免在单个物理机中运行太多Redis实例配置合适的cluster-node-timeout值
集群还是主从
单体Redis主从Redis已经能达到万级别的QPS并且也具备很强的高可用特性如果主从能满足业务需求的情况下尽量不搭建Redis集群