日常提交

This commit is contained in:
2022-08-21 01:35:15 +08:00
parent d8b866c9f7
commit 4abd459b0d

View File

@@ -3,6 +3,12 @@
- 在Spring框架中与Redis进行通信既提供了低层次的api与字节数据进行交互也提供了高度抽象的api供用户使用 - 在Spring框架中与Redis进行通信既提供了低层次的api与字节数据进行交互也提供了高度抽象的api供用户使用
- Redis Connection支持通过连接器和Redis服务端进行低层次的交互 - Redis Connection支持通过连接器和Redis服务端进行低层次的交互
- RedisTemplate则是向用户提供了高层次api与Rdis服务端进行交互 - RedisTemplate则是向用户提供了高层次api与Rdis服务端进行交互
- ## 连接Redis
- 为了通过IOC容器连接Redis需要使用统一的Spring Redis API。对于任何库提供的Redis Connector都会统一向外提供一致的Spring Redis API。
- Spring Redis API通过RedisConnection和RedisConnectionFactory接口进行工作并且从Redis处获取连接
- ## RedisConnection和RedisConnectionFactory
- RdisConnection用于提供和Redis后端的交互。RedisConnection接口会自动将底层Connector库异常转化为统一的Spring DAO异常因而在使用ReidsConnection的过程中如果切换底层链接库并不需要代码的改动。
- RedisConnection时通过RedisConnectionFactory来获取的
- ## RedisTemplate - ## RedisTemplate
- RedisTemplate是线程安全的可以在多个线程中被并发安全的使用 - RedisTemplate是线程安全的可以在多个线程中被并发安全的使用
- RedisTemplate使用java底层的序列化机制在通过RedisTemplate读取或者写入数据时会通过Java的序列化机制将对象序列化/反序列化。 - RedisTemplate使用java底层的序列化机制在通过RedisTemplate读取或者写入数据时会通过Java的序列化机制将对象序列化/反序列化。
@@ -27,3 +33,21 @@
- ## 序列化Serializer选择 - ## 序列化Serializer选择
- 除了先前提到的jdk默认的序列化机制和StringRedisSerializerSpring Data Redis还提供了其他Serializer - 除了先前提到的jdk默认的序列化机制和StringRedisSerializerSpring Data Redis还提供了其他Serializer
- 例如可以选择将key和value化为json字符串格式可以选用Jackson2JsonSerializer或者GenericJackson2JsonSerializer - 例如可以选择将key和value化为json字符串格式可以选用Jackson2JsonSerializer或者GenericJackson2JsonSerializer
> 相对于Jackson2JsonSerializerGenericJackson2JsonSerializer在序列化对象为json串时添加了对象的java类型信息故而在将json串反序列化并且转换为原有类型时不会抛出异常
```java
/**
* 如果想要自定义redisTemplate的序列化方式可以添加如下配置类
* RedisTemplate支持分别自定义key/value/hashkey/hashvalue的序列化方式
* RedisTemplate也支持设置defaultSerializer当key/value/hashkey/hashvalue的Serializer没有显式指定时会应用defaultSerializer
**/
@Configuration
public class SerializerConfig {
@Bean(name="redisTemplate")
RedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
}
}
```