Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Redis INCRBY với giới hạn

Câu trả lời này có thể không phải là những gì bạn mong đợi. Nhưng tôi phải nói rằng Lua scripting là giải pháp rõ ràng.

-- 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

Ngoài ra, nếu phạm vi là [0, 2^N - 1] , thì bạn có thể sử dụng BITFIELD lệnh có kiểm soát tràn để giải quyết vấn đề.

BITFIELD key OVERFLOW FAIL INCRBY uN 0 increment

Tuy nhiên, đó có vẻ không phải là trường hợp của bạn.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để đặt / lấy pandas.DataFrame đến / từ Redis?

  2. Hiệu suất của Redis vs Disk trong ứng dụng bộ nhớ đệm

  3. Đặt khóa tiền tố bộ đệm Redis trên Symfony

  4. Các lựa chọn thay thế cho Cấu trúc lồng nhau trong Redis?

  5. Đặt đường dẫn động trong redis.conf bằng cách sử dụng biến Môi trường