怎么实现redis的读锁
发表时间:2024-07-28 03:10:48
来源:网友投稿
避免掉入 SETNX(SET if Not eXists) 陷阱的最好方法就是永远不要使用它:
setnx lock "lock"
expire lock 100
del lock
场景:某个查询数据库的接口,因为调用量比较大,所以加了缓存,并设定缓存过期后刷新.
问题是当并发量比较大的时候,如果没有锁机制,那么缓存过期的瞬间,大量并发请求会穿透缓存直接查询数据库,造成雪崩效应. 如果有锁机制,那么就可以控制只有一个请求去更新缓存,其它的请求视情况要么等待,要么使用过期的缓存.
$key = 'cache_update_lock'; //锁
$random = md5( uniqid(getmypid().'_'.mt_rand().'_', true) ); //随机值
$ttl = 10; /x表示not exists,ex表示expire,ttl表示time to live,单位是秒.
if( $redis->set($key, $random, ['nx', 'ex' => $ttl]) ) {
$cache->update(); //加锁后执行业务逻辑,这里是更新缓存
//加入随机值判断是为了避免删除到其他操作的锁
if($redis->get($key) == $random) {
$redis->del($key);
}
}
免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。
如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!
相关资讯
汽修专业新疆怎么找工作
2025-04-06
机械专业专长怎么写简历
2025-04-06
专科怎么报审计专业的
2025-04-06
专业学科导师类别怎么填
2025-04-06
查报考专业网站怎么查
2025-04-06
水电专业规划怎么写简历
2025-04-06
表演专业怎么留学的好呢
2025-04-06
专业防雷检测怎么收费的
2025-04-06
怎么查询同等学力专业
2025-04-06
高考技能专业怎么选择的
2025-04-06
钢筋套筒专业名称怎么写
2025-04-06
中专怎么填高考志愿专业
2025-04-06
中专统招怎么报志愿专业
2025-04-06
师范专业自我评价怎么写
2025-04-06
景观建筑换专业怎么换好
2025-04-06
建筑专业学生简历怎么写
2025-04-06
推荐资讯
自来水减压阀(自来水减压阀原理图解)
2024-05-08 13:47:01
猪肚煲鸡需要下什么配料
2024-03-08 12:30:09
外交部新发言人毛宁是谁
2024-07-18 01:56:29
香蕉的繁体字怎么写
2024-07-28 11:23:03
电焊硬度有多少度
2024-07-29 13:00:15
脑筋急转弯怎么玩
2024-07-30 02:44:01
喜欢的人和爱人有区别吗
2024-08-16 10:44:28
七八中教学质量怎么样
2024-08-21 16:47:25
华科博士是什么
2024-08-23 12:41:28
翁心什么专业
2025-03-19 13:36:17
新励学网教育平台
海量全面 · 详细解读 · 快捷可靠
累积科普文章数:18,862,126篇
热门关注