让多个客户端在redis数据库中使用唯一帐户

时间:2014-09-30 14:40:10

标签: redis

所以我有多个redis客户端,例如: C1,C2,C3,...

在我的数据库中有多个独特的帐户,例如: A1,A2,A3,...

如果客户正在使用该帐户,则我希望为每个客户提供“阻止”帐户,而不允许其他客户使用该帐户。此外,如果客户端崩溃持有帐户,则应取消阻止帐户。

我目前所做的是(例如ID为0的帐户):

K := account:0:used

watch(K)
multi

if exists(K)
abort

exec:
setWithTimeout(K,5*60*1000,"1")//Ensure Its blocked for 5 Minutes

有更好的方法吗?我可能想使用脚本,但我认为应该有一个更容易的选择来解决这个问题。

1 个答案:

答案 0 :(得分:1)

SET支持以下调用(我不确定您使用的是哪种语言/客户端):

SET account:0:used EX 3600 NX

这样你就可以用WATCH / MULTI / EXEC的单一命令完成整个事情