引入 Redis

简介

Jedis

Jedis 是早期的 Redis 的 Java 实现客户端,提供了比较全面的 Redis 命令的支持,其官方网址是:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.html

优点:支持全面的 Redis 操作特性(可以理解为 API 比较全面)。

缺点:使用阻塞的 I/O,且其方法调用都是同步的,程序流需要等到 sockets 处理完 I/O 才能执行,不支持异步;

Jedis 客户端实例不是线程安全的,所以需要通过创建连接池来使用 Jedis。

lettuce

lettuce 是一种可扩展的线程安全的 Redis 客户端,支持异步模式。如果避免阻塞和事务操作,如 BLPOP 和 MULTI/EXEC,多个线程就可以共享一个连接。lettuce 底层基于 Netty,支持高级的 Redis 特性,比如哨兵,集群,管道,自动重新连接和 Redis 数据模型。lettuce 的官网地址是:https://lettuce.io/

优点:支持同步异步通信模式;

Lettuce 的 API 是线程安全的,如果不是执行阻塞和事务操作,如 BLPOP 和 MULTI/EXEC,多个线程就可以共享一个连接。

RedisTemplate

Spring 对 Redis 操作的一层封装,他的底层是通过 Jedis、Lettuce 实现的。如果我们使用 spring-boot-starter-data-redis 则默认时 Lettuce。

RedisTemplate 集群

把单机的 yml 文件改一下就可以了

spring:
  data:
    redis:
      database: 0
      # 没有密码
      #password: 123456
      cluster:
        # 获取失败 最大重定向次数
        max-redirects: 3
        nodes:
          - 192.168.64.100:6381
          - 192.168.64.100:6382
          - 192.168.64.100:6383
          - 192.168.64.100:6384
          - 192.168.64.100:6385
      lettuce:
        pool:
          max-active: 8
          max-wait: -1ms
          max-idle: 8
          min-idle: 0
        cluster:
          refresh:
            #支持集群拓扑动态感应刷新,自适应拓扑刷新是否使用所有可用的更新,默认false关闭
            adaptive: true
            #刷新周期
            period: 2000

RedisTemplate 单机

pom.xml 文件引入依赖
        <!--SpringBoot与Redis整合依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>
yml 配置
spring:
  data:
    redis:
      database: 0
      host: 192.168.64.100
      port: 6379
      # 没有密码
      #password: 123456
      lettuce:
        pool:
          max-active: 8
          max-wait: -1ms
          max-idle: 8
          min-idle: 0
OrderController
@RestController
public class OrderController {
   
   
	@Autowired
	private OrderService orderService;
	@PostMapping("/addOrder")
	public Long addOrder(){
   
   
		//测试就不传参数了
		return orderService.addOrder();
	}
	@GetMapping("/getOrder")
	public String getOrder(Long id){
   
   
		return orderService.getOrder(id);
	}
	//路径传参请求---->   http://localhost:8080/getOrderById/164
	@GetMapping("/getOrderById/{id}")
	public String getOrderByid(@PathVariable("id") Integer id){
   
   
		return orderService.getOrder(Long.valueOf(id));
	}
}
OrderService
public interface OrderService {
   
   
	long addOrder();
	String getOrder(Long id);
}
OrderServiceImpl
@Service
public class OrderServiceImpl implements OrderService {
   
   
	public static final String ORDER_KEY = "order:"
### 引入和配置 Redis 的方法 在 Java 项目中引入和配置 Redis 是一个常见的需求,尤其是在 Spring Boot 项目中。以下是具体的操作步骤: #### 1. 引入 Redis 依赖 首先需要在项目的 `pom.xml` 文件中引入 Redis 相关的依赖。以下是 Maven 配置示例: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.7.3</version> </dependency> ``` 通过引入上述依赖,Spring Boot 会自动配置 Redis 连接所需的基本组件[^3]。 #### 2. 配置 Redis 参数 接下来需要在项目的 `application.yml` 或 `application.properties` 文件中配置 Redis 的连接信息。以下是一个典型的 `application.yml` 配置示例: ```yaml spring: redis: host: localhost # Redis服务器地址 port: 6379 # Redis端口号 password: # Redis密码(如果设置了密码) timeout: 5000ms # 超时时间 lettuce: pool: max-active: 8 # 最大连接数 max-idle: 5 # 最大空闲连接数 min-idle: 2 # 最小空闲连接数 ``` 以上配置指定了 Redis 的主机地址、端口、密码、超时时间以及连接池的相关参数[^3]。 #### 3. 配置 RedisTemplate 或 StringRedisTemplate Spring Boot 提供了 `RedisTemplate` 和 `StringRedisTemplate` 两种工具类来操作 Redis 数据库。推荐使用 `StringRedisTemplate`,因为它的默认序列化方式是字符串形式,而 `RedisTemplate` 默认采用 JDK 的序列化策略,可能会导致 key 和 value 在 Redis 中显示为乱码[^2]。 以下是配置 `StringRedisTemplate` 的代码示例: ```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 redisConnectionFactory) { return new StringRedisTemplate(redisConnectionFactory); } } ``` #### 4. 使用 Redis 存储和获取数据 完成上述配置后,可以在业务逻辑中注入 `StringRedisTemplate` 并使用它进行 Redis 操作。以下是一个简单的代码示例: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; @Service public class RedisService { @Autowired private StringRedisTemplate stringRedisTemplate; public void set(String key, String value) { stringRedisTemplate.opsForValue().set(key, value); } public String get(String key) { return stringRedisTemplate.opsForValue().get(key); } } ``` 通过 `set` 方法可以将数据存储到 Redis 中,通过 `get` 方法可以从 Redis 中获取数据[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值