redis之性能优化
1
redis-cli命令的 --stat选项
关于stat选项,官网也是介绍的比较简单。使用redis-cli命令加上stat选项可以实时监视redis实例,比如当前节点内存中缓存的 key总数以及每秒处理请求数等。stat默认每隔一秒会输出一行信息,如果需要改变频率可使用-i <interval> 指定频率,单位为秒,如--stat -i 100。需要配合-h选项使用。

关于requests与connections官方也没有介绍,自己结合本地和线上的输出,做了对比得出的结论。
------- data ------ --------------------- load -------------------- - child -
keys mem clients blocked requests connections
97146 6.82G 1724 0 60068357585 (+49536) 93936323
97146 6.82G 1724 0 60068403702 (+46117) 93936323
97146 6.82G 1724 0 60068451875 (+48173) 93936323
97146 6.82G 1724 0 60068496037 (+44162) 93936323
- keys:当前节点缓存的key总数
- mem:当前节点缓存总的占用内存
- clients:当前节点的活跃连接数,或者说未断开连接的总连接数
- blocked:当前节点正在等待阻塞命令的数量
- requests:当前处理的请求数,与上一次请求数相减可知1秒所处理的请求,或者说所执行的命令数。
- connections:是历史连接总数,即到目前为止,一共新建了多少个连接。与前一次相减,可以得出一秒内新建的连接数。
Requests列括号里的数是每间隔所处理的命令数。比如当前60068496037减去前一次60068451875 等于44162,由于stat默认频率是每秒输出一次,44162就是每秒执行4万多条命令。正好是括号里面的数字,也因此可以知道,括号里面的数字代表每秒(interval)执行的命令数。
当然--stat每秒输出一次结果也是一条命令,所以在没有任何请求的情况下,你看到的requests是自增的,可以本地起个redsi服务,然后使用redis-cli --stat观察下输出。
Blocked并不是排队等待执行的命令数,而是客户端执行阻塞命令的总数。比如BLPOP。
Connections也是很有用的参数,如果发现connections与前一次的差值很大,且很频繁,那就要看下代码中连接池配置是否生效了。
网络延迟也是我们要关注的问题
redis-cli命令--latency选项可以测试当前服务器与redis某个节点的网络延迟。
>src/redis-cli --latency -h 172.31.1.1
min: 0, max: 12, avg: 0.25 (1047 samples)
avg:0.25,即延迟为250μs。如果通过外网连接网络延迟会很高,比如跨机房的redis调用,延迟高的情况下使用redis反而比使用本地硬盘读写性能更差。
还有其它影响redis性能的因素,比如内存的使用,持久化策略等。
AOF持久化策略影响性能问题
如果数据不需要持久化,或者要求不严格,建议直接禁用掉AOF持久化策略,同时RDB快照的保存时间间隔也要调高一些,比如一小时一次,以此达到更高的性能。
# 是否开启持久化策略
# (支持同时开启RDB和AOF,即混合策略)
appendonly no # yes: 在aof重写期间不做fsync刷盘操作,可能丢失整个AOF重写期间的数据,
no-appendfsync-on-rewrite yes # fsync针对单个文件操作(比如AOF文件),做强制硬盘同步,fsync将阻塞直到写入硬盘完成后返回,保证了数据持久化。
# always:每次写入都要同步AOF文件。
# no:同步硬盘操作由操作系统负责,通常同步周期为30秒,数据安全性无法保证。
# everysec:由专门线程每秒同步一次fsync。理论上只有在系统突然宕机的情况下丢失1秒的数据。
appendfsync no #当前aof文件大小与上次重写后文件大小的比值超过该值时进行重写,200即等于之前的2倍
auto-aof-rewrite-percentage 200 #当aof文件大小大于该值时进程重写,以减小aof文件占用的磁盘空间
auto-aof-rewrite-min-size 64mb
1)主线程负责写入AOF缓冲区。
2)AOF线程负责每秒执行一次同步磁盘操作,并记录最近一次同步时间。
3)主线程负责对比上次AOF同步时间。如果距上次同步成功时间在2秒内,主线程直接返回;如果距上次同步成功时间超过2秒,主线程将会阻塞,直到同步操作完成。
如果系统fsync缓慢,将会导致Redis主线程阻塞影响效率。
上次我将一千两百万记录的ip库数据写入redis时,就因为开启了aof持久化策略,由于大批量数据的写入,导致aof文件几乎每秒重写一次,后面改为1g时重写也因为文件过大重写时间长,没有一次能够成功将一千两百万数据成功写入的。
redis之性能优化的更多相关文章
- redis服务器性能优化
1.系统内存OOM优化 vm.overcommit_memory Redis会占用非常大内存,所以通常需要关闭系统的OOM,方法为将“/proc/sys/vm/overcommit_memory”的值 ...
- 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程
* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...
- java架构师负载均衡、高并发、nginx优化、tomcat集群、异步性能优化、Dubbo分布式、Redis持久化、ActiveMQ中间件、Netty互联网、spring大型分布式项目实战视频教程百度网盘
15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; ...
- 15套java架构师、集群、高可用、高可扩 展、高性能、高并发、性能优化Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程
* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...
- Redis各种数据结构性能数据对比和性能优化实践
很对不起大家,又是一篇乱序的文章,但是满满的干货,来源于实践,相信大家会有所收获.里面穿插一些感悟和生活故事,可以忽略不看.不过听大家普遍的反馈说这是其中最喜欢看的部分,好吧,就当学习之后轻松一下. ...
- 网站性能优化小结和spring整合redis
现在越来越多的地方需要非关系型数据库了,最近网站优化,当然从页面到服务器做了相应的优化后,通过在线网站测试工具与之前没优化对比,发现有显著提升. 服务器优化目前主要优化tomcat,在tomcat目录 ...
- 《吐血整理》Redis 性能优化的 13 条军规!史上最全
Redis 是基于单线程模型实现的,也就是 Redis 是使用一个线程来处理所有的客户端请求的,尽管 Redis 使用了非阻塞式 IO,并且对各种命令都做了优化(大部分命令操作时间复杂度都是 O(1) ...
- 吊打面试官系列:Redis 性能优化的 13 条军规大全
1.缩短键值对的存储长度 键值对的长度是和性能成反比的,比如我们来做一组写入数据的性能测试,执行结果如下: 从以上数据可以看出,在 key 不变的情况下,value 值越大操作效率越慢,因为 Redi ...
- Redis 实战 —— 07. 复制、处理故障、事务及性能优化
复制简介 P61 关系型数据库通常会使用一个主服务器 (master) 向多个从服务器 (slave) 发送更新,并使用从服务器来处理所有读请求. Redis 也采用了同样的方法实现自己的复制特性,并 ...
- redis性能优化、内存分析及优化
redis性能优化.内存分析及优化 1.优化网络延时 2.警惕执行时间长的操作 3.优化数据结构.使用正确的算法 4.考虑操作系统和硬件是否影响性能 5.考虑持久化带来的开销 5.1 RDB 全量持久 ...
随机推荐
- CIIS 2023 丨聚焦文档图像处理前沿领域,合合信息 AI 助力图像处理与内容安全保障
近日,2023第十二届中国智能产业高峰论坛(CIIS 2023)在江西南昌顺利举行.大会由中国人工智能学会.江西省科学技术厅.南昌市人民政府主办,南昌市科学技术局.中国工程科技发展战略江西研究院承办. ...
- SQL Server – 我常用语句
前言 旧没用又忘记了, 又没有 intellisense, 记入这里吧. Reset Auto Increment DBCC CHECKIDENT ('TableName'); -- check cu ...
- 东方通TongWeb7部署SuperMap iServer War包
一.软件版本 操作系统: CentOS 7.5.1804 JDK:1.8_201 东方通:TongWeb7.0.4.2 SuperMap iServer:10.2 二.东方通TongWeb7部署流程 ...
- 运维管理平台OEM定制集成开发,激发IT价值
对硬件设备商而言,借助优秀的网管.运维管理平台,可以形成完整的产品解决方案,直接提升产品的形象和适用范围.同时还可以通过网管.运维管理平台,切入到外围的产品及集成领域,并在用户后续的升级改造活动中占据 ...
- react native 环境搭建遇到问题
关于pod install 慢的要死的问题 解决方法记录 开始时显示ruby有问题,卸载cocoapods重装的 然后启动不起来,到ios目录下执行 pod install 然后太慢尝 ...
- USB gadget configfs
概述 USB Linux Gadget是一种具有UDC (USB设备控制器)的设备,可以连接到USB主机,以扩展其附加功能,如串口或大容量存储能力. 一个gadget被它的主机视为一组配置,每个配置都 ...
- 小程序的image组件
mode属性:用来制定图片的裁剪和缩放模式:常用属性如下:
- 用 KubeKey 快速离线部署 K8s 与 KubeSphere
作者:尹珉,KubeSphere Ambassador,KubeSphere 社区用户委员会杭州站站长 一.KubeKey 介绍 KubeKey(以下简称 KK) 是一个用于部署 Kubernetes ...
- 7 个非常实用的 Shell 拿来就用脚本实例!
前天,在群里看到有一位读者分享了几道 Shell 脚本实例题目,索性看到了,不如来写写巩固下基础知识,如下: 1. 并发从数台机器中获取 hostname,并记录返回信息花费的时长,重定向到一个文件 ...
- docker容器开启ssh服务
http://www.dtmao.cc/news_show_703007.shtml Step1 利用CentOS基础镜像,创建一个docker容器,主要这里要指定端口映射,必须要映射到容器内的22端 ...