必备redis6教程-分布式缓存Redis6.X+高可用集群课程介绍-小滴课堂

该教程详细讲解了如何在SpringBoot2.x环境中整合Redis6客户端,包括Jedis和Lettuce的使用,以及配置RedisTemplate进行序列化和反序列化的实战操作。内容涵盖新版SpringBoot2.X项目创建、RedisTemplate的序列化机制、客户端连接池配置等。
摘要由CSDN通过智能技术生成

第五章 新版SpringBoot2.x整合Redis6客户端实战

第1集 分布式缓存Redis客户端讲解

简介:分布式缓存Redis客户端讲解

  • 自带客户端 redis-cli

  • 可视化工具

  • 语言客户端:java、nodejs、python

    • jedis

    • lettuce

    • java语言客户端:

      Jedis 是直连模式,在多个线程间共享一个 Jedis 实例时是线程不安全的,需要使用连接池其API提供了比较全面的Redis命令的支持,相比于其他Redis 封装框架更加原生Jedis中的方法调用是比较底层的暴露的Redis的API,Java方法基本和Redis的API保持着一致使用阻塞的I/O,方法调用同步,程序流需要等到socket处理完I/O才能执行,不支持异步操作高级Redis客户端,用于线程安全同步,异步响应基于Netty的的事件驱动,可以在多个线程间并发访问, 通过异步的方式可以更好的利用系统资源

第2集 新版SpringBoot2.X项目创建

简介:新版SpringBoot2.X项目创建

  • 新版SpringBoot2.X介绍

    • 官网:https://spring.io/projects/spring-boot

    • GitHub地址:https://github.com/spring-projects/spring-boot

    • 官方文档:https://spring.io/guides/gs/spring-boot/

    • 视频地址:https://item.taobao.com/item.htm?id=618384570391

  • 相关软件环境和作用

    • https://translate.google.cn/

    • JDK1.8+以上

    • Maven3.5+

    • 编辑器IDEA(旗舰版)

    • PostMan

    • 翻译神器

  • 在线创建 :https://start.spring.io/

    • 采用springboot2.5 + jdk11

    • 初次导入项目下载包比较慢 5~20分钟不等

    • 不建议修改默认maven仓库(可以先还原默认的,防止下载包失败)

    • idea记得配置jdk11

    • 出问题的话: mvn clean install 试试

    • 注意:

第3集SpringBoot2.x实战整合Redis客户端+单元测试

简介:SpringBoot2.x整合Redis客户端+单元测试

  • 在SpringBoot整合Redis很简单

    <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-data-redis</artifactId>  </dependency>

    • 操作mysql/redis/elasticseatch

    • SpringDataRedis是专门操作redis的依赖

    • SpringData介绍

    • 添加依赖 spring-boot-starter-data-redis

  • 注意

    • 升级版本

    • 换jedis

    • 并发量不高

    • 内存足够大,没发生问题就又发布更新了

    • Springboot2后默认使用Lettuce作为访问redis的客户端

    • 旧版本lettuce存在堆外内存溢出的bug, 5.3版本修复了这个bug, 我们是用 6.1

    • 很多同学没产生原因

    • 解决方式

第4集 SpringDataRedis的RedisTemplate讲解介绍

简介:SpringDataRedis配置RedisTemplate介绍

  • RedisTemplate介绍

    • ValueOperations:简单K-V操作

    • SetOperations:set类型数据操作

    • ZSetOperations:zset类型数据操作

    • HashOperations:针对map类型的数据操作

    • ListOperations:list类型的数据操作

  • RedisTemplate和StringRedisTemplate的区别

    • 当redis数据库里面本来操作的是字符串数据的时候,那使用StringRedisTemplate即可

    • 数据是复杂的对象类型,那么使用RedisTemplate是更好的选择

    • StringRedisTemplate继承RedisTemplate

    • 两者的数据是不共通的(默认的序列化机制导致key不一样)

    • StringRedisTemplate默认采用的是String的序列化策略

    • RedisTemplate默认采用的是JDK的序列化策略,会将数据先序列化成字节数组然后在存入Redis数据库

    • 总结

  • 操作

    • 存储字符串

    • 存储对象

    • String结构

第5集 RedisTemplate的序列和反序列化机制讲解

简介:RedisTemplate的序列和反序列化机制讲解

  • 上集问题

    • 同个key为啥获取不到值,核心就是序列化机制导致key不一样

  • 什么是序列化

    • 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中

    • 在网络上传送对象的字节序列。

    • 把对象转换为字节序列的过程称为对象的序列化。

    • 把字节序列恢复为对象的过程称为对象的反序列化。

    • 对象的序列化主要有两种用途

  • Redis为什么要序列化

    • 采用默认的jdk方式会乱码(POJO类需要实现Serializable接口)

    • 采用JSON方式则不用,且可视化工具更好查看

    • 性能可以提高,不同的序列化方式性能不一样

    • 可视化工具更好查看

    • ​自定义redis序列化方式,提供了多种可选择策略

    • 另一种javabean与json之间的转换,同时也需要指定Class类型

    • 利用jackson-json工具,将pojo实例序列化成json格式存储

    • Key或者value为字符串

    • POJO对象的存取场景,使用JDK本身序列化机制

    • 默认机制 ObjectInputStream/ObjectOutputStream进行序列化操作

    • JdkSerializationRedisSerializer

    • StringRedisSerializer

    • Jackson2JsonRedisSerializer

    • GenericFastJsonRedisSerializer

    • ..

第6集 RedisTemplate 序列化机制配置实战

简介:自定义序列化和反序列化机制配置实战

  • 配置实战

@Configurationpublic 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;    }}

第7集 SpringBoot整合Jedis+Lettuce客户端连接池配置实战

简介: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
    • Jedis连接池介绍(可以不排除lettuce依赖包)

    • Lettuce连接池介绍(添加连接池)

  • 断点调试 redisTemplate的connectionFactory实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值