Redis 操作的选择上,StringRedisTemplate和RedisTemplate各有玩法。如果你只是简单存取字符串,用前者就挺顺手,省心省事;但遇到对象序列化、复杂结构,RedisTemplate才是你的好搭档。关键还是看场景,用哪个都不亏。
直接用StringRedisTemplate
,就像在纯文本数据,操作挺直接,像这样:
stringRedisTemplate.opsForValue().set("name", "Tom");
String name = stringRedisTemplate.opsForValue().get("name");
但你要是想存个自定义对象,那就得上RedisTemplate
,还得配上序列化器,不然就只能看着乱码发呆了:
redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(User.class));
User user = new User("Tom", 25);
redisTemplate.opsForValue().set("user:1", user);
User result = redisTemplate.opsForValue().get("user:1");
两个模板底层都是操作 Redis 的,但StringRedisTemplate
默认用StringRedisSerializer
来键值,对字符串友好;而RedisTemplate
更灵活,可以自己定制序列化规则,适合做复杂结构。
哦对了,别忘了看下Redis 实践指南及代码示例,里面的例子还蛮实用的,多业务场景你都能用得上。
如果你主要是做一些配置、缓存参数类的键值存储,StringRedisTemplate
够用;但涉及复杂对象传输,还是老老实实配置好RedisTemplate
吧。