redis
龙门之上
一个程序员
展开
-
redis集群如何扩容在线扩容的?
问题由来我们知道redis的集群有16384个槽,集群中的每个节点会对应一部分的槽key通过CRC16校验后对16384取模,来放置到槽中。但是在生产中,我们集群的大小是需要调整的。那他是怎么进行扩容的呢?添加节点对一个包含7000、7001、7002三个节点的集群来说,我们可以向这个集群添加一个IP为127.0.0.1,端口号为7003的节点(节点7003):– cluster meet 127.0.0.1 7003重新分片然后执行 cluster nodes,这样redis cluster原创 2021-04-16 16:04:33 · 1515 阅读 · 0 评论 -
redis zset我之见
Zset案例先看一个最简单的zset案例alpha:3>zadd key 1 tom # 添加key"1"alpha:3>zadd key 2 yorick"1"alpha:3>zadd key 3 yorick # 这里事实上是 将yorick 的score 由2改为了3"0"alpha:3>zrange key 0 10 withscores #查询指定区间内的 成员,并连key 一起返回 1) "tom" 2) "1" 3) "yorick"原创 2020-11-23 18:56:05 · 94 阅读 · 0 评论 -
redisson watchdog 使用和原理
redisson watchdog 使用和原理最近研究redisson分布式锁,有了一些收获特此记录一下首先redisson加锁的基本流程图如下:这里面我最难以理解的一点是 watchdog机制。找了很多资料,最后基本弄明白了 watchdog的使用和 原理。首先watchdog的具体思路是 加锁时,默认加锁 30秒,每10秒钟检查一次,如果存在就重新设置 过期时间为30秒。然后设置默认加锁时间的参数是 lockWatchdogTimeout(监控锁的看门狗超时,单位:毫秒)官方文档描述如下原创 2020-11-19 16:07:57 · 15615 阅读 · 10 评论 -
redisson RocketMQ秒杀下单实战总结
之前完成了一个秒杀下单系统的开发,现在总结一下,起因业务场景是社区电商, 疫情期间,社区准备了一批口罩,打算分批让用户抢购。那时我们还在过年,客户也没通知我们,然后我们这个小电商系统,在当晚就挂掉了。下面是我们当时的架构:类似下面稍微思考到这个架构的问题,用户下单时,redisson进行加锁时,会让其他线程等待。所以在并发大时,会导致tomcat连接数超限。后面查询日志也证明了如此,所以当时临时的解决方案是,重启+增加应用容器。总算勉强度过。后面我们紧急改造了我们的业务j流程,变成了下面这样:原创 2020-11-12 20:38:51 · 1358 阅读 · 0 评论 -
SpringBoot集成Redisson
SpringBoot集成Redission引用redission start这里使用最新版spring: redis: port: 6379 host: 172.20.176.216 password: WjcR2019# timeout: 3000 database: 3 配置redis数据源我这里是单机版,所以基本配置如下spring: redis: port: 6379 host: reids主机地址 p原创 2020-11-05 21:03:50 · 822 阅读 · 0 评论 -
redis原理之快照(rdb)原理
redis 的持久化有两种 一种就是rdb 另一种就是 aof首先 看看rdb的配置,在redis.conf中 (yum安装 的话默认在 /etc/redis.conf)中save 900 1save 300 10save 60 10000900秒内,如果超过1个key被修改,则发起快照保存300秒内,如果超过10个key被修改,则发起快照保存60秒内,如果1万个key被修改,则发起快照保存redis rdb的文件保存位置,也是在 redis.conf中dbfilename dum原创 2020-09-11 16:11:26 · 1087 阅读 · 0 评论 -
redis原理之io线程模型
众所周知 redis是单线程的,但是他的QPS(Query Per Second) 又很高,也就是很快!那么是为什么呢?纯内存访问这个许多人都清楚,redis 将所有数据放在内存中,内存的响应时长大约为 100 纳秒,这是 redis 的 QPS 过万的重要基础。非阻塞IO这个也是重要的原因,了解非阻塞IO之前我们先了解一下什么是阻塞IO。什么是阻塞式 IO当我们调用 Scoket 的读写方法,默认它们是阻塞的。read() 方法要传递进去一个参数 n,表示读取这么多字节后再返回,如果没有读够原创 2020-09-03 19:20:46 · 271 阅读 · 0 评论