
Nosql缓存 redis
文章平均质量分 92
hashcon
做自媒体技术分享很久了,大家的抬爱与支持让我很开心很感激,但是个人本来做这些也并不是为了收益,只是为了个人学习与传播知识帮助更多的人,所以我将全网所有账号全部收益,持续捐给各种公益项目,也算不辜负大家的抬爱,也是回报祖国对我的一番培养。
曾任职于顺丰,华为,网易等公司,从Java小白,成长为资深开发与项目组首席架构师。喜欢源码与开源,曾贡献 MyCat1.6 核心源码,贡献过druid,Spring Cloud,dubbox,Apache RocketMQ,Apache Bookeeper 等多开源项目。
展开
-
Spring-data-redis + Lettuce 如何使用 Pipeline
关于 spring-data-redis 和 lettuce,笔者写过不少文章:这个 Redis 连接池的新监控方式针不戳~我再加一点佐料spring-data-redis 连接泄漏,我 TM 人傻了spring-data-redis 动态切换数据源spring-data-redis 上百万的 QPS 压力太大连接失败,我 TM 人傻了最近,私信还有留言中,网友提到 spring-data-redis 和 lettuce 一起使用,pipeline 通过抓包一看,并没有生效,这个如何配置才能生原创 2021-10-17 09:57:13 · 3436 阅读 · 0 评论 -
spring-data-redis 上百万的 QPS 压力太大连接失败,我 TM 人傻了
大家好,我们最近业务量暴涨,导致我最近一直 TM 人傻了。前几天晚上,发现由于业务压力激增,某个核心微服务新扩容起来的几个实例,在不同程度上,出现了 Redis 连接失败的异常:org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to c.原创 2021-10-04 10:19:41 · 1050 阅读 · 0 评论 -
spring-data-redis 动态切换数据源
最近遇到了一个麻烦的需求,我们需要一个微服务应用同时访问两个不同的 Redis 集群。一般我们不会这么使用 Redis,但是这两个 Redis 本来是不同业务集群,现在需要一个微服务同时访问。其实我们在实际业务开发的时候,可能还会遇到类似的场景。例如 Redis 读写分离,这个也是 spring-data-redis 没有提供的功能,底层连接池例如 Lettuce 或者 Jedis 都提供了获取只读连接的 API,但是缺陷有两个:上层 spring-data-redis 并没有封装这种接口基于 r.原创 2021-08-31 08:16:32 · 421 阅读 · 0 评论 -
spring-data-redis 连接泄漏,我 TM 人傻了
本系列是 我TM人傻了 系列第四期[捂脸],往期精彩回顾:升级到Spring 5.3.x之后,GC次数急剧增加,我TM人傻了这个大表走索引字段查询的 SQL 怎么就成全扫描了,我TM人傻了获取异常信息里再出异常就找不到日志了,我TM人傻了本文基于 Spring Data Redis 2.4.9最近线上又出事儿了,新上线了一个微服务系统,上线之后就开始报各种发往这个系统的请求超时,这是咋回事呢?还是经典的通过 JFR 去定位(可以参考我的其他系列文章,经常用到 JFR),对于历史某.原创 2021-08-30 09:50:50 · 1680 阅读 · 0 评论 -
这个 Redis 连接池的新监控方式针不戳~我再加一点佐料
Lettuce 是一个 Redis 连接池,和 Jedis 不一样的是,Lettuce 是主要基于 Netty 以及 ProjectReactor 实现的异步连接池。由于基于 ProjectReactor,所以可以直接用于 spring-webflux 的异步项目,当然,也提供了同步接口。在我们的微服务项目中,使用了 Spring Boot 以及 Spring Cloud。并且使用了 spring-data-redis 作为连接 Redis 的库。并且连接池使用的是 Lettuce。同时,我们线上的 J.原创 2021-08-12 09:23:58 · 616 阅读 · 1 评论 -
分布式缓存存储算法与实践思考
最近遇到一个问题,可能很多人也遇到过:由于业务量的增长,缓存节点个数不够用了。现在的Redis-Cluster直接就加个节点就解决了,但是之前Redis-Cluster不稳定时,我们并不敢用这个,而是通过自己实现分布式缓存Redis实现,在遇到这个问题时,碰到不少麻烦。由于我们分片算法很简单,直接用户id的哈希值对节点个数取余。假设原来是3,现在是4,那么至少有1-(3/4*3)=四分之三的数据...原创 2019-04-12 11:40:18 · 1708 阅读 · 0 评论 -
Redis系列-生产应用篇-分布式锁(5)-单进程Redis分布式锁的Java实现(Redisson使用与底层实现)-原子锁类
Redisson单进程Redis分布式悲观锁的使用与实现本文基于Redisson 3.7.54. 原子锁类Redisson中实现了两种原子锁类:RAtomicLong和RAtomicDouble,还有RLongAdder和RDoubleAdderRAtomicDouble和RAtomicLong其实一样的,RLongAdder和RDoubleAdder其实原理也是一样的,这里我们只说R...原创 2018-09-19 10:43:58 · 16312 阅读 · 0 评论 -
Redis系列-生产应用篇-分布式锁(4)-单进程Redis分布式锁的Java实现(Redisson使用与底层实现)-读写锁
Redisson单进程Redis分布式悲观锁的使用与实现 本文基于Redisson 3.7.53. 读写锁Redisson的分布式可重入读写锁RReadWriteLock Java对象实现了java.util.concurrent.locks.ReadWriteLock接口。同时还支持自动过期解锁。该对象允许同时有多个读取锁,但是最多只能有一个写锁。写锁是排它锁,获取写锁的时...原创 2018-09-13 19:43:38 · 15816 阅读 · 0 评论 -
Redis系列-生产应用篇-分布式锁(1)-单进程Redis分布式锁实现思路
什么是分布式锁针对共享内存模型的程序(例如JAVA程序),锁就是一个非常常用的机制。 一般简单分为悲观锁和乐观锁。悲观锁就是你获取这块数据的锁之后,别人就无法访问或操作这块数据,直到你释放这个锁。乐观锁一般就是CAS更新。 在单进程内内存的锁,只控制进程内数据的,就是非分布式锁。相反的,跨进程,需要锁住多个进程访问数据的锁就是分布式锁。 悲观锁一般由Redis的SETNX实现,乐观锁一般...原创 2018-09-03 17:12:25 · 15381 阅读 · 1 评论 -
Redis系列-生产应用篇-分布式锁(2)-单进程Redis分布式锁的Java实现(Redisson使用与底层实现)-可重入锁
Redisson单进程Redis分布式悲观锁的使用与实现 本文基于Redisson 3.7.51. 可重入锁(Reentrant Lock)这种锁的使用方式和Java本身框架中的Reentrant Lock一模一样RLock lock = redisson.getLock("testLock");try{ // 1. 最常见的使用方法 //lock....原创 2018-09-05 16:22:35 · 16938 阅读 · 0 评论 -
Redis系列-生产应用篇-分布式锁(3)-单进程Redis分布式锁的Java实现(Redisson使用与底层实现)-公平锁
Redisson单进程Redis分布式悲观锁的使用与实现 本文基于Redisson 3.7.52. 公平锁这种锁的使用方式和Java本身框架中的FairLock一模一样:RLock fairLock = redisson.getFairLock("testLock");try{ // 最常见的使用方法 fairLock.lock();原创 2018-09-11 20:34:09 · 18815 阅读 · 0 评论 -
Redis巧用合集
Redis批量删除某个规则的keyredis-cli -h redis.host -p 6379 keys "key:*" |xargs redis-cli -h redis.host -p 6379 del原创 2017-12-19 22:05:44 · 4112 阅读 · 0 评论