让多台客户机使用唯一的帐户中的Redis数据库

问题描述:

所以我有多个Redis的客户,如: C1,C2,C3,...让多台客户机使用唯一的帐户中的Redis数据库

而且在我的数据库中有像多个唯一帐户: 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 

是否有这样做的更好的办法?我可能想使用脚本,但我认为应该有一个更简单的选项来解决这个问题。

SET支持以下调用(我不知道用什么语言/你使用,虽然客户端):

SET account:0:used EX 3600 NX 

这样你整个事情在一个命令W/O WATCH/MULTI /执行

+1

你好,谢谢你的答案它的完美:)。我正在使用go-redis。它似乎没有提供这个,但命令生成器允许我轻松地添加新的命令。 – Pete 2014-09-30 15:45:09