Redis
docker で一瞬で使う memo
code:up.sh
$ docker run -it redis bash
$ redis-server &
$ redis-cli
まとめて消す
FLUSHALL
Lua Scripting
atomic に一連のクエリを発行したいときに
SET しようとした値が大きかったり小さかったりした時だけ SET する(例は大きい値でのみ SET できる)
code:SET_IF_GRATER
local epoch = redis.call('GET', KEYS1) or 0 if (tonumber(epoch) < tonumber(ARGV1)) then return redis.call('SET', KEYS1, ARGV1, 'EX', ARGV2) end
return nil
code:ZADD_GT
local score = redis.call('ZSCORE', KEYS1, ARGV2) or 0 if (tonumber(score) < tonumber(ARGV1)) then return redis.call('ZADD', KEYS1, ARGV1, ARGV2) end
return nil
SortedSet から特定のスコアの範囲のものを取って削除する
local q = redis.call('ZRANGEBYSCORE', KEYS[1], ARGV[1], ARGV[2], 'LIMIT', 0, ARGV[3]); if (q) then; for _, v in ipairs(q) do; redis.call('ZREM', KEYS[1], v); end; end; return q
同じスコアのものが LIMIT 外にある可能性があるので ZREMRANGEBYSCORE はダメでちまちま消している