Redis原子性
一般我们会通过加锁来控制并发请求,但是加锁肯定是有消耗的,而且加锁本身也会引入其他一系列的问题,如分布式锁失效等。
那么原子操作便是另一个控制并发请求的手段,即无锁操作。
Redis有2种原子操作方法:
1.单命令操作
2.lua...
汪明鑫
2个月前 (02-08) 82浏览 0评论
0喜欢
在一些简单的业务场景下,其实不用考虑锁的重入、重试等问题,也很少需要考虑Redis主从切换,分布式锁失效。
那么一种最简单的分布式锁实现,其实就是Redis setNX, 其实已经能满足大多数场景了
直接上代码:
public class RedisD...
汪明鑫
2个月前 (02-07) 80浏览 0评论
0喜欢
no code say j8
先把代码fork过来
https://github.com/redis/redis
https://github.com/xinyeshuaiqi/redis
代码下载到本地
再安装一个c/c++开发工具 cl...
汪明鑫
2个月前 (02-07) 80浏览 0评论
1喜欢
之前记住这个图,就自认为理解了事务消息,然而在生产中真的用的事务消息时,发现还是有很多地方理解不到位的,这里再好好学习,深入理解一下。
RocketMQ可以帮助我们实现最终一致性
比如我们本地执行一个事务,然后还有一个其他系统的事务,我们想保证2个模...
汪明鑫
2个月前 (02-06) 76浏览 0评论
0喜欢
“影子”的概念在技术侧最早诞生于阿里的大促全链路压测
那我们先来聊下全链路压测
由于业务不断的架构升级,引入分布式微服务
传统的线下测试已经不能满足我们的测试需求了,因此需要全链路压测
一般需要压测平台,创建配置压测计划,对接口进行发压
这样的压测流...
汪明鑫
11个月前 (04-22) 267浏览 0评论
3喜欢
缓存使用场景和心得
内存的诞生是为了弥补CPU和磁盘速度的不一致的问题
内存的价格都比磁盘要贵的多
CPU的多级缓存也是同理,把数据暂存于缓存,加速数据读取
在业务中我们也常常使用缓存做读写分离,写操作落db
读流量打到缓存,用缓存抗读流量,用了...
汪明鑫
11个月前 (04-22) 473浏览 0评论
0喜欢
本文简单介绍分布式共识算法 Raft
Raft存在的目的是为了解决分布式集群下数据不一致的问题
Raft主要有2个流程:
1)选主
2)数据同步
Raft集群节点身份见下图 网上扒的,比较清晰,
大概就是候选人,获得多数投票成为leader, 发现更高...
汪明鑫
11个月前 (04-22) 151浏览 0评论
0喜欢
Map Reduce
为了整个系统的吞吐量,做到分片多实例并行处理
异步化
主要包含几个方面,一来是通过消息队列做削峰和解藕,可以把非核心逻辑异步化,避免同步接口等待耗时过长
还可以理解通过定时任务实现异步扫库表驱动
这里也可以理解起多线程异步并行处理
&n...
汪明鑫
1年前 (2022-03-28) 177浏览 0评论
1喜欢
如果可以使用被驱动表的索引,join还是有优势的,让驱动表走全表扫描,而被驱动表是走树搜索。
否则就是驱动表全表扫 + 被驱动表全表扫,那就不要用join。
使用join的时候,尽量使用小表作为驱动表。
join会借助join buffer做数据关联,join buffer不够...
汪明鑫
1年前 (2022-03-14) 205浏览 0评论
3喜欢
查询过程中访问到的对象才会加锁,而加锁的基本单位是next-key lock(前开后闭);
等值查询上MySQL的优化:索引上的等值查询,如果是唯一索引,next-key lock会退化为行锁,如果不是唯一索引,需要访问到第一个不满足条件的值,此时next-key lock会...
汪明鑫
1年前 (2022-03-01) 246浏览 0评论
0喜欢