$redis->setnx('lock:hot_items', true)尝试创建一个key作为”锁”.若key已存在,setnx不会做任何动作且返回值为false,所以只有一个客户端会返回true值进入if语句更新缓存.
给作为”锁”的key设置20s的过期时间,以防PHP进程崩溃或处理过期时,在作为”锁”的key过期之后允许另外的进程去更新缓存.
if语句中调用expensive_database_call(),将最新的数据正常保存到hot_items.
$redis->setnx('lock:hot_items', true)尝试创建一个key作为”锁”.若key已存在,setnx不会做任何动作且返回值为false,所以只有一个客户端会返回true值进入if语句更新缓存.
给作为”锁”的key设置20s的过期时间,以防PHP进程崩溃或处理过期时,在作为”锁”的key过期之后允许另外的进程去更新缓存.
if语句中调用expensive_database_call(),将最新的数据正常保存到hot_items.
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:http://www.heiqu.com/d3b5864825a54ddbe2bf2fb4ba2b9656.html