通常、キー セットを取得してから、look を使用して各キーと値のペアを削除します。
パターンを介してすべてのキーを削除することは可能ですか?
すなわち:
Del sample_pattern:*
evalを使用してみてください。私は Lua の専門家ではありませんが、このコードは機能します。
private static final String DELETE_SCRIPT_IN_LUA =
"local keys = redis.call('keys', '%s')" +
" for i,k in ipairs(keys) do" +
" local res = redis.call('del', k)" +
" end";
public void deleteKeys(String pattern) {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
if (jedis == null) {
throw new Exception("Unable to get jedis resource!");
}
jedis.eval(String.format(DELETE_SCRIPT_IN_LUA, pattern));
} catch (Exception exc) {
if (exc instance of JedisConnectionException && jedis != null) {
jedisPool.returnBrokenResource(jedis);
jedis = null;
}
throw new RuntimeException("Unable to delete that pattern!");
} finally {
if (jedis != null) {
jedisPool.returnResource(jedis);
}
}
}
そして、次のように呼び出します。
deleteKeys("temp:keys:*");
これにより、1 回のサーバー側呼び出しと複数回の削除操作が保証されます。
Redissonを使用して 1 行で実行できます。
redisson.getKeys().deleteByPattern(pattern)