From b04c65a949e5322047f653e46136c84a03204108 Mon Sep 17 00:00:00 2001 From: liliang Date: Wed, 2 Apr 2025 14:44:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=BF=E6=8D=A2redis=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/imooc/config/RedisConfig.java | 56 +++++++++++++++++++ .../src/main/resources/application-dev.yml | 24 ++++---- book-api/src/main/resources/redisson.yml | 19 +++++++ book-common/pom.xml | 14 ++++- .../imooc/service/impl/UserServiceImpl.java | 12 +++- 5 files changed, 109 insertions(+), 16 deletions(-) create mode 100644 book-api/src/main/java/com/imooc/config/RedisConfig.java create mode 100644 book-api/src/main/resources/redisson.yml diff --git a/book-api/src/main/java/com/imooc/config/RedisConfig.java b/book-api/src/main/java/com/imooc/config/RedisConfig.java new file mode 100644 index 0000000..2a079f9 --- /dev/null +++ b/book-api/src/main/java/com/imooc/config/RedisConfig.java @@ -0,0 +1,56 @@ +package com.imooc.config; + +import org.redisson.api.RedissonClient; +import org.redisson.spring.data.connection.RedissonConnectionFactory; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +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.RedisTemplate; +import org.springframework.data.redis.serializer.RedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Configuration +@ConditionalOnClass(RedissonClient.class) +public class RedisConfig { + + private static final RedisSerializer STRING_SERIALIZER = new StringRedisSerializer(); + + @Bean + RedissonConnectionFactory redisConnectionFactory(RedissonClient redisson) { + log.info("------------->>>配置自定义RedissonConnectionFactory"); + return new RedissonConnectionFactory(redisson); + } + + @Bean + RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { + log.info("------------->>>配置自定义RedisTemplate"); + return buildRedisTemplate(redisConnectionFactory); + } + + /** + * 配置redisTemplate + * + * @param redisConnectionFactory + * @param enableTransactionSupport + * @return + */ + private RedisTemplate buildRedisTemplate(RedisConnectionFactory redisConnectionFactory) { + // 配置redisTemplate + RedisTemplate redisTemplate = new RedisTemplate<>(); + redisTemplate.setConnectionFactory(redisConnectionFactory); + // key序列化 + redisTemplate.setKeySerializer(STRING_SERIALIZER); + // value序列化 + redisTemplate.setValueSerializer(STRING_SERIALIZER); + // Hash key序列化 + redisTemplate.setHashKeySerializer(STRING_SERIALIZER); + // Hash value序列化 + redisTemplate.setHashValueSerializer(STRING_SERIALIZER); + // 初始化RedisTemplate + redisTemplate.afterPropertiesSet(); + return redisTemplate; + } +} diff --git a/book-api/src/main/resources/application-dev.yml b/book-api/src/main/resources/application-dev.yml index ce60c66..15bdf51 100644 --- a/book-api/src/main/resources/application-dev.yml +++ b/book-api/src/main/resources/application-dev.yml @@ -18,17 +18,19 @@ spring: max-lifetime: 540000 # 连接池的最大生命时长(毫秒),超时则会被释放(retired) connection-test-query: SELECT 1 redis: - host: 82.156.121.2 - port: 26379 - password: e4ea0caebfd2 - database: 1 # 使用的数据库编号 - jedis: - pool: - max-idle: 50 # 最大空闲连接 - max-active: 200 # 连接池最大连接数 - max-wait: 5000 # 连接池最大阻塞等待时间, -1表示没有限制 - min-idle: 4 # 最小空闲连接 - timeout: 50000 +# host: 82.156.121.2 +# port: 26379 +# password: e4ea0caebfd2 +# database: 1 # 使用的数据库编号 +# jedis: +# pool: +# max-idle: 50 # 最大空闲连接 +# max-active: 200 # 连接池最大连接数 +# max-wait: 5000 # 连接池最大阻塞等待时间, -1表示没有限制 +# min-idle: 4 # 最小空闲连接 +# timeout: 50000 + redisson: + file: classpath:redisson.yml data: mongodb: # uri: mongodb://root:root@192.168.1.202:27017 diff --git a/book-api/src/main/resources/redisson.yml b/book-api/src/main/resources/redisson.yml new file mode 100644 index 0000000..84174d8 --- /dev/null +++ b/book-api/src/main/resources/redisson.yml @@ -0,0 +1,19 @@ +singleServerConfig: + address: redis://82.156.121.2:26379 + password: e4ea0caebfd2 + database: 1 + idleConnectionTimeout: 10000 + connectTimeout: 10000 + timeout: 3000 + retryAttempts: 3 + retryInterval: 1500 + clientName: null + subscriptionConnectionMinimumIdleSize: 1 + subscriptionConnectionPoolSize: 10 + subscriptionsPerConnection: 5 + connectionMinimumIdleSize: 4 + connectionPoolSize: 20 +threads: 0 +nettyThreads: 0 +codec: ! {} +transportMode: NIO \ No newline at end of file diff --git a/book-common/pom.xml b/book-common/pom.xml index 47fc751..faaad37 100644 --- a/book-common/pom.xml +++ b/book-common/pom.xml @@ -41,10 +41,20 @@ - + + + org.redisson + redisson-spring-boot-starter + 3.16.4 + + + + org.apache.commons + commons-pool2 + diff --git a/book-service/src/main/java/com/imooc/service/impl/UserServiceImpl.java b/book-service/src/main/java/com/imooc/service/impl/UserServiceImpl.java index 0780692..aaa4165 100644 --- a/book-service/src/main/java/com/imooc/service/impl/UserServiceImpl.java +++ b/book-service/src/main/java/com/imooc/service/impl/UserServiceImpl.java @@ -22,8 +22,10 @@ import com.imooc.vo.UsersVO; import org.apache.commons.lang3.StringUtils; import org.n3r.idworker.Sid; +import org.redisson.api.RedissonClient; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.http.HttpStatus; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; @@ -55,8 +57,11 @@ public class UserServiceImpl implements UserService { @Autowired private UserMemberMapper userMemberMapper; - @Autowired - public RedisOperator redis; + //@Autowired + //public RedisOperator redis; + + @Resource(name = "redisTemplate") + private RedisTemplate redisTemplate; @Autowired private Sid sid; @@ -268,7 +273,8 @@ public class UserServiceImpl implements UserService { return Optional.ofNullable(userMemberMapper.getUserByMemberId(memberId))// .map(user -> { String uToken = UUID.randomUUID().toString(); - redis.set(REDIS_USER_TOKEN + ":" + user.getId(), uToken); + //redis.set(REDIS_USER_TOKEN + ":" + user.getId(), uToken); + redisTemplate.opsForValue().set(REDIS_USER_TOKEN + ":" + user.getId(), uToken); // 返回给前端 UsersVO usersVO = new UsersVO(); BeanUtils.copyProperties(user, usersVO);