【Redis】Redis6教程

本文详细介绍了Redis6的基础知识,包括StringRedisTemplate、集群、主从和哨兵设置。讲解了Redis与Spring Boot的整合,重点讨论了LUA脚本在Redis中的优势以及如何用RedisTemplate实现分布式锁。文中还提到了Redis事务在秒杀场景的应用,并对比了Jedis和Lettuce客户端。最后,讨论了Redisson分布式锁的实现及其原理。
摘要由CSDN通过智能技术生成


视频: https://www.bilibili.com/video/BV1Rv41177Af
笔记: https://pan.baidu.com/s/1gqLrT3hcR-9s9VYl7dPGpg 提取码:hfl3
本博客是对上述笔记的补充。

基础补充

StringRedisTemplate

StringRedisTemplate继承自RedisTemplate<String, String>,当操作对象都是String类型的时候,就使用StringRedisTemplate即可。

注意:StringRedisTemplatevalueSerializerStringRedisSerializer,它只序列化字符串,不能序列化对象!

集群

Redis6开始,自动集成了Rubby,不需要手动装了!

主从

哨兵

命令方式设置主从机的情况下,若不使用哨兵,会有以下问题:

  • 若主机挂了,从机原地待命。
  • 若从机挂了,重启后不再是从机(除非从机是在配置文件中配置的)

Redis6开始,从机优先级配置项改为了replica-priorit

JedisSentinalPool中设置的是哨兵服务器的IP和端口号

@Bean
public JedisSentinelPool jedisSentinelPool(){
   
    Set<String> sentinels = new HashSet<String>();
    // 哨兵服务器的IP和端口号
    sentinels.add("192.168.142.129:26379");
    // Jedis连接池的配置类
    JedisPoolConfig config = new JedisPoolConfig();
    
 	// 这里"mymaster"与sentinel.conf文件中”sentinel monitor mymaster 192.168.142.129 6379 2 ” 的"mymaster"对应
    JedisSentinelPool jedisPool = new JedisSentinelPool("mymaster",sentinels,config);
    return jedisPool;
}

Redis与Spring Boot整合

Jedis是Redis官方推荐的面向Java的操作Redis的客户端,而RedisTemplate是SpringDataRedis中对JedisApi的高度封装。SpringDataRedis相对于Jedis来说可以方便地更换Redis的Java客户端,比Jedis多了自动管理连接池的特性,方便与其他Spring框架进行搭配使用如:SpringCache。

Lettuce 和 Jedis 的都是连接Redis Server的客户端程序。Jedis在实现上是直连redis server,多线程环境下非线程安全,除非使用连接池,为每个Jedis实例增加物理连接。Lettuce基于Netty的连接实例(StatefulRedisConnection),可以在多个线程间并发访问,且线程安全,满足多线程环境下的并发访问,同时它是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例。

spring-boot-starter-redis 在2017年6月后就改为了 spring-boot-starter-data-redis。

SpringBoot2.x 后默认使用的不再是Jedis而是lettuce,所以spring-boot-starter-data-redis 依赖了:lettuce-core、spring-data-redis、spring-boot-starter。

9.1 整合步骤

教程中使用默认的lettuce客户端,没有使用集群,且没有使用分布式锁(第16.4节基于redisTemplater实现的简单分布式锁)。若要使用Jedis客户端,且使用集群,且使用基于jedisCluster实现的简单分布式锁(redisson的分布式锁可参考16.4节的补充),就步骤如下。
pom文件:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.RELEASE</version>
    <relativePath />
</parent>

<!-- Redis -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <!-- 1.5的版本默认采用的连接池技术是jedis,2.0以上版本默认连接池是lettuce, 因为此次是采用jedis,所以需要排除lettuce的jar -->
    <exclusions>
        <exclusion>
            <groupId>io.lettuce</groupId>
            <artifactId>lettuce-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- jedis客户端 -->
<dependency
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值