为什么你的系统总在半夜崩溃?
某电商平台大促期间,一个抢购接口被狂刷每秒10万次请求,数据库直接瘫痪!
2025年06月03日
public Product getProductByReadWriteLock(Long productId) {
String redisId = SystemConstants.REDIS_KEY_PREFIX + productId;
// 1. 先查redis缓存
Product product = getProductFromRedis(redisId);
if (product != null) {
return product;
}
// 加写锁
ReadWriteLock readWriteLock = redisson.getReadWriteLock(SystemConstants.LOCK_HOT_UPDATE_PREFIX + productId);
Lock writeLock = readWriteLock.writeLock();
writeLock.lock();
// 2. DCL再查redis,因为只要有一次查询数据库操作,redis就已经有缓存数据了
Product productMysql;
try {
product = getProductFromRedis(redisId);
if (product != null) {
return product;
}
// 3. 加读锁 读数据库
ReadWriteLock readWriteLock2 = redisson.getReadWriteLock(SystemConstants.LOCK_HOT_UPDATE_PREFIX + productId);
Lock readLock = readWriteLock2.readLock();
readLock.lock();
productMysql = getProductFromMysql(productId);
readLock.unlock();
} finally {
writeLock.unlock();
}
return productMysql;
}
2025年06月03日
Redis是非常核心的分布式系统中间件,会了提升性能,Redis会涉及到单线程以及多线程处理问题,而且大厂也特喜欢考察,下面我就重点来详解Redis单线程以及多线程@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
Redis所谓的单线程并不是所有工作都是只有一个线程在执行,而是指Redis的网络IO和键值对读写是由一个线程来完成的。
2025年06月03日
各位头条的看官们,走在技术浪潮前沿的朋友们,咱们这“Redis漫谈”系列是越聊越有劲,越挖越深!前面咱们从云计算聊到AI,从商业化聊到未来趋势,把Redis的方方面面都给“解剖”了一遍。今天,咱们来聚焦一个当下炙手可K热,并且未来极具潜力的技术方向——Serverless(无服务器)架构!
您可能要问了:“Serverless?听起来很高大上啊!它跟咱们的老朋友Redis有啥关系?Redis这种需要常驻内存、维护连接池的家伙,能适应Serverless那种‘召之即来,挥之即去’、‘按需使用’的模式吗?”