SpringBoot整合Redis和Redision锁
- 游戏开发
- 2025-08-23 22:00:02

参考文章
1.Redis 1.导入依赖 <!--Redis依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.apache mons</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 mons.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"; } } }
SpringBoot整合Redis和Redision锁由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“SpringBoot整合Redis和Redision锁”