Redis清理缓存
最近有个需求需要主动的去清理部分缓存,考虑的原子性的问题,用Lua脚本进行实现。
Lua脚本
local count = 0
for _,k in ipairs(redis.call('KEYS', ARGV[1]))
do
redis.call('DEL', k)
count = count + 1
end
return count
shell运行
redis-cli --eval file.lua ,[KEY PATTERN]
#sample: 清理所有key以Test开头的记录
redis-cli --eval clear.lua , Test*
Java
Jedis jedis = new Jedis("127.0.0.1", 6379);
URL resource = Resources.getResource("META-INF/scripts/clear.lua");
String lua = Resources.toString(resource, Charsets.UTF_8);
Object eval = jedis.eval(lua, 0, "Name*");
System.out.println(eval);