2015-05-11 20 views
0

我想在redis中存储一个计数。我只想在钥匙存在时增加计数。我究竟做错了什么?存在返回false并且incr正在执行。redis-rb多键只能增加密钥集

key = "blah" 
result = REDIS_DB.multi do 
    exists = REDIS_DB.exists(key) 
    REDIS_DB.incr(key) if exists 
end 

# result: [false, 1] 

我是redis的新手。我刚刚读了the redis transactions doc。据我所知,multi中的命令应该一个接一个执行?

的Rails 4.0.2,3.0.1的Redis,redis-rb(对Redis的一个Ruby客户端库)

回答

1

这可能是我一直在寻找:

result = REDIS_DB.watch(key) do 
    if REDIS_DB.exists(key) 
    REDIS_DB.incr(key) 
    else 
    REDIS_DB.unwatch 
    end 
end