百度做一個(gè)網(wǎng)站多少錢專業(yè)制作網(wǎng)頁(yè)的公司
一 redis實(shí)現(xiàn)分布式鎖
1.1 原理
setnx+expire+del? 命令實(shí)現(xiàn)redis的分布式鎖;其中 setnx? 不存在則新增;存在則忽略。即先用setnx
來?yè)屾i,如果搶到之后,再用expire
給鎖設(shè)置一個(gè)過期時(shí)間,防止鎖忘記了釋放。例如:
setnx? lock? ?111? ex? 20 nx
但是如果expire無法執(zhí)行, 會(huì)導(dǎo)致死鎖,redis中setnx+expire是非原子操作, 除了用LUA腳本保證實(shí)現(xiàn)原子操作, 其實(shí)可以直接使用redis自帶的set方法直接實(shí)現(xiàn).