Redis清理缓存

最近有个需求需要主动的去清理部分缓存,考虑的原子性的问题,用Lua脚本进行实现。

Lua脚本

1
2
3
4
5
6
7
local count = 0
for _,k in ipairs(redis.call('KEYS', ARGV[1]))
    do
       redis.call('DEL', k)
        count = count + 1
    end
return count

shell运行

1
2
3
4
redis-cli --eval file.lua ,[KEY PATTERN]

#sample: 清理所有key以Test开头的记录
redis-cli --eval clear.lua , Test*

Java

1
2
3
4
5
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);

Comments

comments powered by Disqus