sql >> Database teknologi >  >> NoSQL >> Redis

Redis INCRBY med grænser

Dette svar er måske ikke, hvad du forventer. Men jeg må sige, at Lua scripting er den krystalklare løsning.

-- range-incrby.lua key , increment
local key = KEYS[1]
local increment = ARGV[1]
local cnt = redis.call('get', key) or 0
cnt = cnt + increment
if (cnt >= 0 and cnt <= 100) then
    redis.call('set', key, cnt)
    return cnt
end

Også, hvis området er [0, 2^N - 1] , så kan du bruge BITFIELD kommando med overløbskontrol for at løse problemet.

BITFIELD key OVERFLOW FAIL INCRBY uN 0 increment

Det ser dog ikke ud til at være din sag.




  1. Sammenkæd en streng og et tal i SQL

  2. MongoDB Aggregation Framework Stadier og Pipelining

  3. Kopier/klon en samling i MongoDB

  4. MongoEngine Document Object lavet ved hjælp af from_json gemmer ikke