记录:RedisTemplate与StringRedisTemplate的区别

StringRedisTemplate是RedisTemplate的子类,在构造函数中指定通过StringRedisSerializer进行序列化;而RedisTemplate可以自定义序列化方式。

其中通过StringRedisTemplate方式存入的值,在客户端查看的时候是可直观阅读的,RedisTemplate自定义的序列化方式则不一定可以直观读取,因为有些序列化是直接将存入的值转化为字节存入。

在日常使用中,如果存入的值为String类型,或者简单对象(将对象通过JSON等工具转换为String字符串)则建议直接采用StringRedisTemplate

### 正确注入使用 `StringRedisTemplate` 的方法 在 Spring Boot 中,为了简化 Redis 操作并处理字符串类型的键值对,默认情况下可以配置 `StringRedisTemplate` 来替代通用的 `RedisTemplate<String, Object>`。这不仅减少了序列化/反序列化的复杂度,还提高了性能。 #### 配置类定义 如果应用程序上下文中未自动创建 `StringRedisTemplate` 实例,则需自定义配置来提供该 bean: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.StringRedisTemplate; @Configuration public class RedisConfig { @Bean public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory connectionFactory) { return new StringRedisTemplate(connectionFactory); } } ``` 此段代码确保了即使默认配置缺失的情况下也能获得一个可用的 `StringRedisTemplate` 对象[^1]。 #### 控制器或服务层中的依赖注入 当需要在一个控制器或其他组件中访问 Redis 数据库时,可以通过构造函数或者字段级别的方式引入上述配置好的模板实例: ```java @Service public class MyService { private final StringRedisTemplate template; // 构造器注入方式推荐优先于字段级注入 public MyService(StringRedisTemplate template){ this.template = template; } // 或者采用字段级别的@Autowired注解形式(不建议) //@Autowired //private StringRedisTemplate redisTemplate; ... } ``` 这里展示了两种不同的 DI 方式——构造器注入服务发现机制下的字段注入;前者更受推崇因为它能更好地支持不可变性测试友好型设计[^2]。 #### 基本操作示例 下面是一些常见的基于 `StringRedisTemplate` 进行 CRUD 操作的例子: ```java // 存储单个key-value对 template.opsForValue().set("myKey", "Hello"); // 获取指定key对应的value String value = template.opsForValue().get("myKey"); // 设置带有过期时间(秒)的数据项 template.expire("anotherKey", Duration.ofSeconds(60)); // 删除某个特定key关联的数据记录 template.delete("yetAnotherKey"); ``` 这些简单的 API 调用使得开发者能够轻松地执行基本的操作而无需担心底层连接管理等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值