RedisTemplateで私のスプリングブートアプリケーションを読んでいます。バッチでRedisからデータを取得するRedisTemplate
String valueJson = (String) redisTemplate.opsForValue().get(setKey(someId));
「リストsomeIds」のような「someId」のリストがあり、すべてのIDのデータを取得したいと考えています。もちろん、私はリスト上で反復することができ、個々のキーでredisを打つことができますが、私はそれを望んでいません。代わりに、リスト全体を1つの応答にすることを望みます。
助けてください。
List<Object> results = redisTemplate.executePipelined(
new RedisCallback<Object>() {
public Object doInRedis(RedisConnection connection) throws DataAccessException {
StringRedisConnection stringRedisConn = (StringRedisConnection)connection;
for(String id:someIds)
stringRedisConn.get(id);
return null;
}
});
またはJava 8でhttps://redis.io/topics/pipelining:
はList<Object> results = redisTemplate.executePipelined((RedisCallback<Object>) connection -> {
StringRedisConnection stringRedisConn = (StringRedisConnection) connection;
someIds.forEach(id -> {
stringRedisConn.get(id);
});
return null;
});
結果の一覧は、あなたが望むものをすべて含んでいます
基になるデータ型に応じて、複数のキー(文字列)やハッシュからのエントリを読み取るための 'MGET'、' HMGET'などのバルクコマンドがあります。それ以外の場合は、Thomasが書いたように、パイプラインを使用して複数のコマンドを発行し、最後に同期します。 – mp911de