使用管道的方式存儲資料時,會直接儲存位元組數組,不需要用到序列化的功能
redisTemplate.executePipelined(new RedisCallback<Object>() {
@Override
public Object doInRedis(RedisConnection connection) {
keys.forEach(key -> {
connection.sAdd(key.getBytes(), "str".getBytes());
});
return null;
}
});
使用管道的方式讀取資料時,如果隻傳入一個參數,會預設使用定義好的序列化類對結果進行反序列化操作,進而報
org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; 異常。這時候隻要調用管道的兩個參數的重載方法,第二個參數傳入空就不會再反序列化了
List<Set<byte[]>> list = redisTemplate.executePipelined(new RedisCallback<List<Set<byte[]>>>() {
@Override
public List<Set<byte[]>> doInRedis(RedisConnection connection) throws DataAccessException {
connection.openPipeline();
keys.forEach(key -> {
connection.sMembers(key.getBytes());
});
return null;
}
}, null);