1.Redis
1.导入依赖
<!--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>
2.配置里面加入redis相关
spring:
data:
redis:
# 连接地址
host: 192.168.101.128
# 端口
port: 6379
# 数据库
database: 0
# 用户名,如果有
# username:
# 密码,如果有
password: 123456
# 连接超时
connect-timeout: 5s
# 读超时
timeout: 5s
3.写相关配置类
package com.example.springbootdemo3.config;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericToStringSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {
@Value("${spring.data.redis.host}")
private String redisHost;
@Value("${spring.data.redis.port}")
private int redisPort;
@Value("${spring.data.redis.database}")
private int redisDatabase;
@Value("${spring.data.redis.password}")
private String redisPassword;
@Bean
public RedisConnectionFactory redisConnectionFactory() {
RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(redisHost, redisPort);
config.setDatabase(redisDatabase);
config.setPassword(redisPassword);
// 配置连接池
GenericObjectPoolConfig<Object> poolConfig = new GenericObjectPoolConfig<>();
poolConfig.setMaxTotal(10); // 连接池中的最大连接数
poolConfig.setMaxIdle(5); // 连接池中的最大空闲连接数
poolConfig.setMinIdle(1); // 连接池中的最小空闲连接数
poolConfig.setMaxWaitMillis(2000); // 连接池获取连接的最大等待时间
// 创建一个带有连接池配置的 Lettuce 客户端配置
LettucePoolingClientConfiguration clientConfig = LettucePoolingClientConfiguration.builder()
.poolConfig(poolConfig)
.build();
return new LettuceConnectionFactory(config, clientConfig);
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory());
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericToStringSerializer<>(Object.class));
return template;
}
}
4.可以了,测试一下试试
package com.example.springbootdemo3.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
/**
* description
* Redis配置类
* @author PC 2025/02/20 21:03
*/
@RestController
@RequestMapping("/redis-test")
public class RedisTestController {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@GetMapping("/get")
public Object get(@RequestParam("key") String key) {
return redisTemplate.opsForValue().get(key);
}
@PostMapping
public String set(@RequestParam("key") String key, @RequestParam("value") String value) {
redisTemplate.opsForValue().set(key, value);
return "success";
}
}
2.Redision锁
1.添加依赖
<!--Redis锁依赖-->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.16.8</version> <!-- 请使用最新版本 -->
</dependency>
2.添加配置
package com.example.springbootdemo3.config;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* description
* Rdis锁配置类
* @author PC 2025/02/20 23:48
*/
@Configuration
public class RedissonClientConfig {
@Value("${spring.data.redis.host}")
private String redisHost;
@Value("${spring.data.redis.port}")
private int redisPort;
@Value("${spring.data.redis.password}")
private String redisPassword;
@Bean
public RedissonClient redissonClient() {
Config config = new Config();
String address = "redis://" + redisHost + ":" + redisPort;
config.useSingleServer()
// 设置你的Redis服务器地址和端口
.setAddress(address)
// 设置密码
.setPassword(redisPassword);
RedissonClient redisson = Redisson.create(config);
return redisson;
}
}
3.然后就可以测试用一用了
package com.example.springbootdemo3.controller;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
/**
* description
*
* @author PC 2025/02/20 21:03
*/
@RestController
@RequestMapping("/redis-test")
public class RedisTestController {
@Autowired
private RedissonClient redissonClient;
@PostMapping("/lock")
public String lock() {
RLock lock = redissonClient.getLock("myLock");
boolean b = lock.tryLock();
if(b){
try {
System.out.println("加锁成功");
Thread.sleep(10000);
return "success";
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
lock.unlock();
}
return "success";
}else {
return "fail";
}
}
}