![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 84
阿拉斯加大闸蟹
JDcloud;ByteDance;XueQiu;YiChe;CATARC
展开
-
go Redis SDK线程实现导致延迟问题分析说明
6. 与客户沟通,podA设置了liveness和readiness probe,探测http端口,问题发生期间,没有出现异常,说明node本地容器网络没有问题。1.客户做压力测试时问题发生,在podA内手工发送http本地请求,延迟明显,有时延迟2-10s,有时卡住curl不退出。PodB没有明显卡顿。在进行压力测试过程中,发现客户端访问业务pod访问有延迟,共两个pod,一个延迟大(2-10s),一个延迟小。7.客户对podA没有对各环节做详细的延迟监控,没有关键路径的日志,异常日志等。原创 2023-02-06 16:35:25 · 5598 阅读 · 0 评论 -
Prometheus基于Consul的 Redis 多实例监控方案
在redis_exporter issues中也有人做了针对不同密码不同redis实例采集的Docker镜像, 但这种方案无论在prometheus展示中还是在consul中都会明文暴漏redis实例密码,有需要的可以自己查看[2]操作,但是维护文件对运维确实也是苦难的,可自动化程度低且复杂。的配置文件中,这样维护起来比较难,需要频繁的修改配置文件。在同一级目录下) 的动态发现,虽然不需要再频繁修改的。实现动态发现的,这也是今天说的重点,对于基于。其他过多的就不在扩展了,直接进入正题,通过。原创 2022-09-19 11:30:16 · 7339 阅读 · 0 评论 -
Redis 4集群failover后客户端未感知拓扑变化排查
排查结论23:18分,30.1这台机器出现异常,其在30.2上的Slave Redis服务检测到后提出升主请求并获得通过,成为Master; 23:18至23:34之间,Redis client端对于Redis Server的连接检测并未异常,没有触发拓扑更新,因而对于Redis Server访问异常; 23:34,SRE重启30.1,此时 Redis Client检测到连接断开,触发拓扑更新,Redis访问正常。解决方案当前触发Redis Client更新拓扑的方式有两种:1. 向服务端..原创 2021-09-17 18:35:45 · 9137 阅读 · 0 评论 -
高效的Redis数据删除方式转至元数据结尾
DEL 和 UNLINK区别?同步还是异步?使用DEL命令会触发「同步删除」,如果Key是一个有很多元素的复杂类型,这个过程可能会堵塞一下Redis服务自身,从而影响用户的访问。使用UNLINK命令,Redis服务会先计算删除Key的成本,从而更智能地做出「同步删除」或「异步删除」的选择。成本计算:对于list,hash,set,zset的对象类型,如果长度大于64(由宏LAZYFREE_THRESHOLD定义),才会采用异步删除的手段,从当前db先释放该key,再由另外一个线程做异步删除。原创 2021-06-16 10:51:12 · 8287 阅读 · 0 评论 -
redis基础操作基于redis cluster5 client命令
https://blog.csdn.net/houxian1103/article/details/108270768===============RedisCluster5的安装包wget http://download.redis.io/releases/redis-5.0.3.tar.gztar -zxvf redis-5.0.3.tar.gzcd redis-5.0.3make# 安装到 /usr/local/redis 目录中 安装的文件只有一个bin目录make install.原创 2021-04-13 17:16:06 · 4602 阅读 · 0 评论 -
spring redis引入多个StringTemplate bean报错
问题背景:项目里最初有一个RedisTemplate. 然后新增了个集群 我创建连接池和template,结果。旧redis的数据全跑到新集群来了我当时debug了下,发现俩Template里 连接池,连的是一个ip但是。你有一个 配置了 Primary,假如3个集群的话 怎么搞两个【非】primary的 不还是覆盖?解决过程:、测试通过 吃完饭回来一看,得把spring自动注入的那个给注销掉原因:spring里面我这个使用的是lettuce,他的内部类Le.原创 2021-03-25 15:21:03 · 4159 阅读 · 0 评论 -
默认ForkJoinPool引发的Redis lettuceP99升高
背景:推荐系统升级RedisCluster4的SDK后,与之前的redis2.8的jedis客户端相比性能下降,具体表现在对应接口P99升高问题原因:在项目中使用了parallelStream的并行执行,其和lettuce的异步获取结果的CompletableFuture线程共用了一个ForkJoinPool解决方案:去除对于parallelStream的依赖,使用单独的线程池通过排查堆栈,发现parallelStream产生大量的ForkJoin线程,怀疑其和lettuce的fut原创 2021-03-25 14:18:41 · 5066 阅读 · 2 评论 -
redis cluster master failover问题
背景:在进行主从切换演练的过程中,发现client应用端会在master下线后,slave选举成为主且节点topology拓扑更新完毕的过程中出现报错信息 默认的时间是60s,我这里配置的是300ms io.lettuce.core.RedisCommandTimeoutException: Command timed out after 300 millisecond(s) at io.lettuce.core.ExceptionFactory.createTimeoutExc原创 2021-02-24 15:49:13 · 5833 阅读 · 0 评论 -
redis cluster topology handshake问题
问题背景:2021-01-29由于55.6物理机可用内存较少,担心内存在高峰期吃紧对社区帖子服务的comment集群进行了节点的迁移(在迁移之前帖子服务redis4的client连接已经构建,只是没有读写流量)1.下线了2个实例 10.10.55.6:26962和10.10.55.6:26966,其中一个是master,另外一个是slave2.上线了2个实例 10.10.164.15:26962和10.10.164.15:26966,对上一步的两个节点进行替换2021-02-20 帖..原创 2021-02-24 10:21:29 · 4923 阅读 · 0 评论 -
Redis 最佳实践 1
JedisPool使用的最佳实践(阿里云上现成的,其实就是对Apache-commons-pool2这个库的理解,网上找的七七八八的都是说的GenericObjectPool的配置导致的一些timeout、QPS、no resource之类的问题)Redis 的性能幻想与残酷现实参数说明Jedis连接就是连接池中JedisPool管理的资源,JedisPool保证资源在一个可控范围内,并且保障线程安全。使用合理的GenericObjectPoolConfig配置能够提升Redis的服务性能,原创 2021-01-27 19:14:44 · 3525 阅读 · 0 评论 -
Redis为什么变慢了?Redis性能问题排查详述
Redis 作为优秀的内存数据库,其拥有非常高的性能,单个实例的 OPS 能够达到 10W 左右。但也正因此如此,当我们在使用 Redis 时,如果发现操作延迟变大的情况,就会与我们的预期不符。你也许或多或少地,也遇到过以下这些场景: 在 Redis 上执行同样的命令,为什么有时响应很快,有时却很慢? 为什么 Redis 执行 SET、DEL 命令耗时也很久? 为什么我的 Redis 突然慢了一波,之后又恢复正常了? 为什么我的 Redis 稳定运行了很久,突然从某个转载 2021-01-26 19:33:54 · 3753 阅读 · 0 评论 -
lettuce偶现Connection reset by peer异常排查
问题描述:服务的异常日志中偶现查询超时1min服务异常日志偶现连接断开排查过程:问:这个明显网络超时,按照lettuce的默认超时配置,我这边看完lettuce的配置源码逻辑告诉你另外需要以下几个信息:1.是不是只有这一台服务节点有异常,所有的服务节点都有异常报错吗?2.出现异常时的redis命令和参数,发生时所连接的redis node的ip3.redis服务端监控没有异常(例如:网络,磁盘,慢日志)答:1.目前2个都有出现2.。。。3...原创 2020-12-24 10:28:07 · 9531 阅读 · 3 评论 -
redis单元测试
embedded-redis:Redis embedded server for Java integration testingredis-unit:Redis instance for unit testing applications.原理:启动java的嵌入式redis,然后获取启动时的随机端口,通过spring-redis的创建工厂映射自己需要的bean(使用雪球RedisCluster4的,redis-sdk里面有单元测试:http://git.snowballfinance.com原创 2020-12-01 14:26:42 · 3245 阅读 · 0 评论 -
分布式限速器
限流算法漏桶算法漏桶算法思路很简单,水(也就是请求)先进入到漏桶里,漏桶以一定的速度出水,当水流入速度过大会直接溢出,然后就拒绝请求,可以看出漏桶算法能强行限制数据的传输速率。 示意图(来源网络)如下:令牌桶算法令牌桶算法和漏桶算法效果一样但方向相反的算法,更加容易理解。随着时间流逝,系统会按恒定1/QPS时间间隔(如果QPS=100,则间隔是10ms)往桶里加入令牌(想象和漏洞漏水相反,有个水龙头在不断的加水),如果桶已经满了就不再加了。新请求来临时,会各自拿走一个令牌,如果没有令牌可拿了就阻塞原创 2020-10-20 14:50:59 · 2753 阅读 · 0 评论 -
redis slow log采集
价值意义1.便于统计分析,以往只能一个节点一个节点看,采集到一起方便分析2.慢日志持久化,类比MySQL,mysql是有日志文件的,而redis是内存队列FIFO3.redis是单线程的slowlog的监控分析很有意义,严重会导致系统雪崩设计概要实现原理slowlog get [len]和slowlog reset。slowlog get [len]命令获取指定长度的慢查询列表。 redis 127.0.0.1:6379> slowlog get 2...原创 2020-09-10 17:45:34 · 3168 阅读 · 0 评论 -
线上redis ttl时间未到缺key却被删除排查录
引言:以下内容直接从我球的docs粘贴:https://xueqiu.com/欢迎简历投递:hekuangsheng@xueqiu.com问题:目前悬赏贴悬赏有效期为5天,余额只存储在redis中,集群为status集群,key:st:offer:balance:{statusId},缓存有效期为6天。当进行分配赏金时,会查询该贴的余额。有问题的悬赏贴,相应的redis key被删除。 分析:首先,大致看了下业务代码和 redis 组件相关的实现,以及 24/25 号的日志,没有原创 2020-09-07 14:01:41 · 4363 阅读 · 0 评论 -
redis lua执行原理,主从同步,动态变量
[Redis Slowlog]是排查性能问题关键监控指标。它是记录Redis queries运行时间超时特定阀值的系统。这类慢查询命令被保存到Redis服务器的一个定长队列,最多保存slowlog-max-len(默认128)个慢查询命令。当慢查询命令达到128个时,新产生的慢查询被加入前,会从队列中删除最旧的慢查询命令。执行原理创建并修改Lua环境1 创建基础Lua环境 2 载入函数库 3 创建全局表格Lua 4 替换随机函数 5 创建排序辅助函数 6 创建redis.pcall原创 2020-09-07 13:40:17 · 4558 阅读 · 5 评论 -
lettuce write to slave问题排查即redis slot mapping问题
问题现象问题描述2020-07-14社区snowflake-status服务在上线一个redis集群双写功能时遇见线上日志报错,报错内容如下10.10.165.24/logs/stdout.log-2020071420.gz:2020-07-14 20:49:07.495|ERROR|c.x.s.s.c.CommentController|09d358c22ea99bc9.09d358c22ea99bc9<:09d358c22ea99bc9|io.lettuce.core...原创 2020-07-31 10:35:11 · 2906 阅读 · 0 评论 -
Redis Gossip广播通信 2.redis gossip的应用
Redis Cluster节点通信Redis Cluster采用P2P的Gossip协议,每个节点与其他节点间不断通信交换信息,一段时间后节点信息一致,每个节点都知道集群的完整信息。Redis Cluster通信过程:(1)集群中的每个节点都会单独开辟一个TCP通道,用于节点之间彼此通信,通信端口号在基础端口上加10000;(2)每个节点在固定周期内通过特定规则选择几个节点发送ping消息;(3)接收到ping消息的节点用pong消息作为响应。集群中每个节点通过一定规则挑选要通信的节原创 2020-07-21 15:32:08 · 2612 阅读 · 0 评论 -
Redis Gossip广播通信 1.gossip原理概述
出自知乎专栏:P2P 网络核心技术:Gossip 协议摘要:背景Gossip protocol 也叫 Epidemic Protocol (流行病协议),实际上它还有很多别名,比如:“流言算法”、“疫情传播算法”等。这个协议的作用就像其名字表示的意思一样,非常容易理解,它的方式其实在我们日常生活中也很常见,比如电脑病毒的传播,森林大火,细胞扩散等等。Gossip protocol 最早是在 1987 年发表在 ACM 上的论文 《Epidemic Algorithms for..原创 2020-07-21 15:27:02 · 3065 阅读 · 1 评论 -
Redis CRC16校验 2.Redis的CRC16应用
CRC16与slot关系:redis的RCR16与slot的hash槽就分不开了hash槽最大是16384,意味着可以有这么多个node节点,但官方推荐最大的节点数量为1000HASH_SLOT= CRC16(key) mod16384why redis-cluster use 16384 slots?author's :The reason is:Normal heartbeat packets carry the full configuration of a node,..原创 2020-07-21 15:23:54 · 2344 阅读 · 0 评论 -
Redis CRC16校验 1.原理概述
CRC16校验1.原理概述来自简书:CRC16算法 来自github.io带图解说:CRC循环冗余校验 来自之乎专栏:CRC-16校验原理与说明来自简书:CRC16算法简书摘要:CRC16 标准目前常用CRC16算法主要是依据以下两种标准:CRC16 算法按照使用环境不同,主要有以下三种实现: 按位计算 程序空间十分苛刻但 CRC 计算速度要求不高的微控制器系统 按字节计算 程序空间较大且 CRC 计算速度要求较高的计算机或微控.原创 2020-07-21 15:22:34 · 2751 阅读 · 0 评论 -
redis线上动态增加密码认证
首先这个需求要是做得话,大部分情况下如果仅仅是把redis当做cache的话不会有很多的问题,然后如果是当做存储使用的话,其中的问题还不少,首先从网上找到了这两篇内容:1.基于proxy代理实现:https://www.dazhuanlan.com/2020/01/20/5e253da29ab4f/2.修改jedis源代码:https://blog.csdn.net/TVwR8OfV0P/article/details/80155363而我们使用的是lettuce,基于netty编写的,如果要是原创 2020-07-20 10:40:39 · 2111 阅读 · 0 评论 -
Redis server cannot allocate memory
这个问题是redis高端微信群里面反应的,我给记录一下,算是知识补充线上日志:线上redis配置:当时网友推荐这个redis的配置,然后要求提供下线上server日志# By default Redis will stop accepting writes if RDB snapshots are enabled# (at least one save point) and the latest background save failed.# This will mak..原创 2020-06-24 16:38:12 · 2492 阅读 · 0 评论 -
redis-full-check与阿里云redis数据一致性检查
问题:采用阿里云的redis-shake进行redis数据同步的过程中遇见需要进行数据一致性比对分析:理论:CRDT--https://yq.aliyun.com/articles/635628幸运的是CRDT目前仅支持redis 4.0版本,雪球使用的就是redis4解决:采用阿里云开源组件:redis-full-check准备:1.下载组件2.启动命令...原创 2020-04-22 15:43:01 · 2277 阅读 · 0 评论 -
redis-shake进行阿里云redis数据单向同步
问题:服务上云过程中遇见跨机房服务调用问题导致QPS下降,方法耗时增加分析:redis是个缓存服务 自己的损耗不应该被网络时延影响解决:采用阿里开源组件:RedisShake之前也有redis-migrate-tool,但是这个不适合做实时数据同步,其他的那些迁移工具如:redis-port、redis-migration缺少维护社区不活跃,这个阿里云的redis-shak...原创 2020-04-22 15:39:18 · 2844 阅读 · 0 评论 -
lettuce 监控日志
代码地址:https://github.com/singgel/lettuce-infra/问题:线上的redis日志不是很全面,例如:1.无法得知数据返回的remote address2.没有主动记录slowlog慢查询日志3.没有记录connection连接状态4.没有集群的网络拓扑分析:按照官方提供的EventBus总线,异步事件流提供了metric指...原创 2020-04-21 10:42:18 · 3188 阅读 · 0 评论 -
lettuce MGET性能分析
现象:根据服务redis响应p99不符合理想,根据redis server端的监控指标发现在系统调用期间出现的超100ms的查询不是由于slowlog导致分析:1.查看两台机器之间的延时,一个RT延时不超过0.15ms2.查看redis server,在server端设置5ms的延时监控,目前为止也是没有采集到的对应延时时间大的时候的指标config set lat...原创 2020-04-17 16:30:05 · 3833 阅读 · 0 评论 -
redis cluster info字典表
Redis参数 解释 备注 tcp_port tcp端口 uptime_in_seconds 自Redis服务器启动以来,经过的秒数 uptime_in_days 自Redis服务器启动以来,经过的天数 blocked_clients 正在等...原创 2020-03-17 18:24:44 · 843 阅读 · 0 评论 -
redis cluster config字典表
maxmemory-policy 内存淘汰策略,默认noeviction可以选择allkeys-lru、volatile-lru、allkeys-random、volatile-random、volatile-ttl aof-...原创 2020-03-17 18:23:36 · 894 阅读 · 0 评论 -
jedis 常见问题
目录1.redis.clients.jedis.exceptions.JedisConnectionException:java.net.SocketTimeoutException: Read timed out。2.redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource fro...原创 2019-11-04 13:41:16 · 1758 阅读 · 0 评论 -
redis常见问题
马什么梅? .-' _..`. / .'_.'.' | .' (.)`. ;' ,_ `..--.__________.' ; `.;-'| ./ /| | ...原创 2019-10-21 17:23:09 · 936 阅读 · 0 评论 -
关于NoSQL与SQL的区别
云计算背后的秘密:NoSQL诞生的原因和优缺点我本来一直觉得NoSQL其实很容易理解的,我本身也已经对NoSQL有了非常深入的研究,但是在最近准备YunTable的Chart的时候,发现NoSQL不仅非常博大精深,而且我个人对NoSQL的理解也只是皮毛而已,但我还算是一个“知耻而后勇”的人,所以经过一段时间的学习之后,从本系列第六篇开始,就将和大家聊聊NoSQL,而本篇将主要给大家做一下NoS...转载 2016-12-30 10:15:59 · 828 阅读 · 0 评论 -
利用redis实现分布式事务锁,解决高并发环境下减库存
http://download.redis.io/releases/安装:sudo make test 测试编译sudo make install 启动:redis-servrecd “安装目录”redis-server ./redis-3.2.9/redis.conf安装完毕之后,直接上我的github上面下载代码,上手理解吧:https://github.com/sing...原创 2016-11-24 08:30:21 · 1310 阅读 · 0 评论 -
Docker安装Redis
使用以下命令在Docker Hub搜索Redis镜像docker search redis使用以下命令拉取镜像,Redis的镜像docker pull redis:latest使用以下命令查看,本地的redis镜像docker images使用以下命令,使用Reids镜像,创建并启动Redis容器docker run -p 6379:6379 -v $PWD/data:/data -d redi...原创 2018-07-03 16:51:43 · 1025 阅读 · 0 评论 -
RedisCluster非ruby搭建
GitHub硬广:https://github.com/singgel/NoSql-SkillTree还有:https://github.com/singgel/SpringBoot-Templates1.redis的安装:http://download.redis.io/releases/安装:sudo make test 测试编译sudo make install...原创 2018-10-26 17:30:01 · 333 阅读 · 0 评论 -
redis 管理工具比对
目录基本信息基于Java的CacheCloud和RedisManager使用总结CacheCloud:RedisManager:两者差异,RedisManager欠缺的:两者的共同障碍:Redis Monitoring tools and useful links参考链接没啥好说的,迁移工具和管理工具网上五花八门,要是c够好的话,就不费这个力气了基本信息...原创 2019-06-13 16:05:35 · 1790 阅读 · 0 评论 -
《Redis开发与运维》读书笔记二
之前这本书看了大概二分之一,后面就没有再坚持下去,这次在我球管理redis-manager的机会,重新捡起这本书,深度的阅读,以防止自己记忆碎片,整理文档。Redis开发与运维这本书的内容太多,网上没有找到检索,记录下来自己认为重要的信息片段,供检所使用。书籍地址:https://github.com/singgel/Study-Floder目录fork操作:salve复...原创 2019-06-25 10:16:39 · 1231 阅读 · 0 评论 -
《Redis开发与运维》读书笔记三
目录集群运维集群倾斜集群读写分离手动故障转移数据迁移缓存更新策略穿透优化无底洞优化雪崩优化热点key优化Linux配置优化flushall/flushdb误操作安全的redis处理bigkey寻找热点key之前这本书看了大概二分之一,后面就没有再坚持下去,这次在我球管理redis-manager的机会,重新捡起这本书,深度的阅读,以...原创 2019-07-01 21:05:50 · 1682 阅读 · 2 评论 -
《Redis开发与运维》读书笔记一
之前这本书看了大概二分之一,后面就没有再坚持下去,这次在我球管理redis-manager的机会,重新捡起这本书,深度的阅读,以防止自己记忆碎片,整理文档。Redis开发与运维这本书的内容太多,网上没有找到检索,记录下来自己认为重要的信息片段,供检所使用。书籍地址:https://github.com/singgel/Study-Floder目录redis可以做什么:redi...原创 2019-06-05 10:02:58 · 1016 阅读 · 0 评论