欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > SpringBoot整合Redis和Redision锁

SpringBoot整合Redis和Redision锁

2025/2/25 5:03:56 来源:https://blog.csdn.net/qq_45923849/article/details/145763873  浏览:    关键词:SpringBoot整合Redis和Redision锁

参考文章

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;@Beanpublic 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);}@Beanpublic 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 {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;@GetMapping("/get")public Object get(@RequestParam("key") String key) {return redisTemplate.opsForValue().get(key);}@PostMappingpublic 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;@Beanpublic 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 {@Autowiredprivate 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";}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词