{
long piliangStart = System.currentTimeMillis()
System.out.println("批量操作开始")
RedisSerializer stringSerializer = new StringRedisSerializer()
redisTemplate.setKeySerializer(stringSerializer)
redisTemplate.setValueSerializer(stringSerializer)
List<String> result = redisTemplate.executePipelined(new SessionCallback() {
//执行流水线
@Override
public Object execute(RedisOperations operations) throws DataAccessException {
//批量处理的内容
for (int i = 0
operations.opsForHash().put("items1",i+"",i+"")
}
//注意这里一定要返回null,最终pipeline的执行结果,才会返回给最外层
return null
}
})
System.out.println("批量结果集合="+result)
long piliangEnd = System.currentTimeMillis()
System.out.println("批量更新用时毫秒值:"+(piliangEnd-piliangStart))
System.out.println("批量操作结束")
System.out.println("
System.out.println("传统操作开始")
long l = System.currentTimeMillis()
BoundHashOperations boundHashOperations = redisTemplate.boundHashOps("items2")
//批量处理的内容
for (int i = 0
boundHashOperations.put(i+"",i+"")
}
long l2 = System.currentTimeMillis()
System.out.println("传统更新用时毫秒值:"+(l2-l))
System.out.println("传统操作结束")
}
根据你的项目需求选择合适的反序列化对象。
比如我在项目中key使用的是StringRedisSerializer,
而值通常使用的是GenerJackson2JsonRedisSerializer。
所以在初始化redisTemplate的时候会这样做
将序列化的实例化对象放入redisTemplate中
当使用的时候就可以直接redis.getKeySerializer()或者redis.getValueSerializer()
这样就不用在实例化一个对象,造成浪费和冗余。
{
RedisSerializer keySerializer = new StringRedisSerializer()
RedisSerializer valueSerializer = new GenericJackson2JsonRedisSerializer()
redisTemplate.setKeySerializer(keySerializer)
redisTemplate.setValueSerializer(valueSerializer)
redisTemplate.setHashKeySerializer(keySerializer)
redisTemplate.setHashValueSerializer(valueSerializer)
this.redisTemplate = redisTemplate
}