鼓楼做网站,佛山 网站设计公司,小程序开发文档pdf,知乎推广优化Redis变慢了#xff1f; 什么是Redis#xff1f;测定Redis变慢#xff1f;最大响应延迟平均响应延迟设置Redis慢日志 分析Redis变慢bigkeysbigkey的危害bigkey优化 写在最后 什么是Redis#xff1f;
作为一个技术人员来说#xff0c;大家用的最多的可能就是Redis了#… Redis变慢了 什么是Redis测定Redis变慢最大响应延迟平均响应延迟设置Redis慢日志 分析Redis变慢bigkeysbigkey的危害bigkey优化 写在最后 什么是Redis
作为一个技术人员来说大家用的最多的可能就是Redis了那么什么是Redis呢这里简单描述一下。 Redis是key-value 存储系统是跨平台的非关系型数据库。支持丰富的数据结构包括字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。那么如何来测定认为Redis变慢了呢
测定Redis变慢
如何来测定Redis变慢了呢最直观的方法就是检测到使用Redis的业务响应变慢了甚至响应超时了那么当然也有可以人工来观测Redis是否变慢的办法在测试Redis是否变慢之前首先要有一个变慢的基准也就是说定一个红线当响应时长超过红线了那么就认为Redis变慢了可以开始排查变慢原因以及相关Redis的优化了。那么这个基准怎么来呢不同的Redis服务器基准定然是不一样的下面我们来测一下。
最大响应延迟
先来测一下Redis最大响应延迟,在Redis服务器上执行命令测试60秒内最大响应时长
[rootmiddle.6.118 ~]#redis-cli -h 127.0.0.1 -p 6379 --intrinsic-latency 60返回结果 可以看到60秒内最大响应延迟就是1742微秒1.742毫秒
平均响应延迟
下面我们再来看一下Redis的最小、最大、平均延迟每隔1秒采样一次
[rootmiddle.6.118 ~]#redis-cli -h 127.0.0.1 -p 6379 --latency-history -i 1返回结果 可以看到在这段时间内平均延迟最大0.42毫秒。 那么后续当你发现某一天你的Redis响应平均延迟超过这个数值的话你就可以认为Redis变慢了。
设置Redis慢日志
这里你可以通过登录Redis服务器来设置Redis的慢日志方便后续根据慢日志查找问题
# 登录Redis[rootmiddle.6.118 ~]#redis-cli -h 127.0.0.1 -p 6379# 慢日志记录超过5毫秒的执行记录127.0.0.1:6379 CONFIG SET slowlog-log-slower-than 5000# 保留最近50条慢日志 这个根据业务需要127.0.0.1:6379 CONFIG SET slowlog-max-len 50查看慢日志列表
# 10 表示指定条数 不指定则查询全部127.0.0.1:6379 SLOWLOG get 10其中: 1慢日志id 2执行时间戳 3执行耗时 4执行命令、参数 查看指定id慢日志详情
127.0.0.1:6379 SLOWLOG get 18338215清空慢日志
127.0.0.1:6379 SLOWLOG RESET分析Redis变慢
Redis变慢会有多方面的原因
bigkeys
比如说你存写的value太大会导致Redis在读取这个key对应的大value时响应变慢导致后续响应都会拖慢排查bigkeys命令
[rootmiddle.6.118 ~]#redis-cli -h 127.0.0.1 -p 6379 --bigkeys -i 0.01其中 -i 0.01的单位是秒 You can use -i 0.1 to sleep 0.1 sec 其中我们可以看到每种数据类型所占用的最大内存 / 拥有最多元素的 key 是哪一个以及每种数据类型在整个实例中的占比和平均大小 / 元素数量。
bigkey的危害
1.响应变慢、超时阻塞 Redis是单线程运行同一时段只能处理一个请求处理bigkeys时会比较耗时请求响应变慢同时也会阻塞其他请求处理。 2.网络阻塞 比如说一个bigkeys是1MB那么同时处理1000个的话就是1000MB流量造成网络阻塞。 3.内存分布不均 Redis集群场景下当当部分bigkeys分布在同一个节点时导致内存倾斜在这一个节点内存分布不均。
bigkey优化
1.业务应用尽量避免写入 bigkey。 2.删除bigkey用 UNLINK 命令替代 DEL此命令可以把释放 key 内存的操作放到后台线程中去执行从而降低对 Redis 的影响。
写在最后
后续会继续分析其他场景下Redis变慢的情况敬请关注。