简介:分布式缓存Redis客户端讲解
自带客户端 redis-cli
可视化工具
语言客户端:java、nodejs、python
java语言客户端:
Jedis 是直连模式,在多个线程间共享一个 Jedis 实例时是线程不安全的,需要使用连接池
?
其API提供了比较全面的Redis命令的支持,相比于其他Redis 封装框架更加原生
?
Jedis中的方法调用是比较底层的暴露的Redis的API,Java方法基本和Redis的API保持着一致
?
使用阻塞的I/O,方法调用同步,程序流需要等到socket处理完I/O才能执行,不支持异步操作
高级Redis客户端,用于线程安全同步,异步响应
?
基于Netty的的事件驱动,可以在多个线程间并发访问, 通过异步的方式可以更好的利用系统资源
简介:新版SpringBoot2.X项目创建
新版SpringBoot2.X介绍
相关软件环境和作用
JDK1.8+以上
Maven3.5+
编辑器IDEA(旗舰版)
PostMan
翻译神器
在线创建 :https://start.spring.io/
注意:
采用springboot2.5 + jdk11
初次导入项目下载包比较慢 5~20分钟不等
不建议修改默认maven仓库(可以先还原默认的,防止下载包失败)
idea记得配置jdk11
简介:SpringBoot2.x整合Redis客户端+单元测试
在SpringBoot整合Redis很简单
SpringData介绍
添加依赖 spring-boot-starter-data-redis
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
注意
Springboot2后默认使用Lettuce作为访问redis的客户端
旧版本lettuce存在堆外内存溢出的bug, 5.3版本修复了这个bug, 我们是用 6.1
很多同学没产生原因
解决方式
简介:SpringDataRedis配置RedisTemplate介绍
RedisTemplate介绍
RedisTemplate和StringRedisTemplate的区别
StringRedisTemplate继承RedisTemplate
两者的数据是不共通的(默认的序列化机制导致key不一样)
StringRedisTemplate默认采用的是String的序列化策略
RedisTemplate默认采用的是JDK的序列化策略,会将数据先序列化成字节数组然后在存入Redis数据库
总结
操作
String结构
简介:RedisTemplate的序列和反序列化机制讲解
上集问题
什么是序列化
把对象转换为字节序列的过程称为对象的序列化。
把字节序列恢复为对象的过程称为对象的反序列化。
对象的序列化主要有两种用途
Redis为什么要序列化
性能可以提高,不同的序列化方式性能不一样
可视化工具更好查看
自定义redis序列化方式,提供了多种可选择策略
JdkSerializationRedisSerializer
StringRedisSerializer
Jackson2JsonRedisSerializer
GenericFastJsonRedisSerializer
...
简介:自定义序列化和反序列化机制配置实战
@Configuration
public class RedisTemplateConfiguration {
?
/**
* @param redisConnectionFactory
* @return
*/
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
?
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
?
// 使用Jackson2JsonRedisSerialize 替换默认序列化
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
?
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
?
// 设置key和value的序列化规则
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
?
// 设置hashKey和hashValue的序列化规则
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
?
// 设置支持事物
//redisTemplate.setEnableTransactionSupport(true);
?
redisTemplate.afterPropertiesSet();
?
return redisTemplate;
}
?
}
简介:SpringBoot整合Jedis+Lettuce客户端连接池配置实战
基于SpringDataRedis可以快速替换底层实现
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.lettuce.pool.max-active = 10
?
# 连接池中的最大空闲连接
spring.redis.lettuce.pool.max-idle = 10
?
# 连接池中的最小空闲连接
spring.redis.lettuce.pool.min-idle = 0
?
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.lettuce.pool.max-wait= -1ms
?
#指定客户端
spring.redis.client-type = lettuce
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--不用指定版本号,本身spring-data-redis里面有-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.6.1</version>
</dependency>
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active = 10
?
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle = 10
?
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle = 0
?
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait= -1ms
?
#指定客户端
spring.redis.client-type = jedis
断点调试 redisTemplate的connectionFactory实现
第五章 新版SpringBoot2.x整合Redis6客户端实战
原文:https://www.cnblogs.com/Xd17324217006/p/14894864.html