From f7b4ac4bc60aff548f0094dc3a08137e2d3c29d3 Mon Sep 17 00:00:00 2001 From: wangchl Date: Tue, 7 Aug 2018 09:46:21 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9B=86=E6=88=90Redis=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E5=B0=81=E8=A3=85=E5=B8=B8=E7=94=A8=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 38 ++-- .../ruoyi/project/tool/redis/RedisConfig.java | 41 ++++ .../tool/redis/RedisTestController.java | 30 +++ .../ruoyi/project/tool/redis/RedisUtils.java | 194 ++++++++++++++++++ src/main/resources/application.yml | 11 +- 5 files changed, 295 insertions(+), 19 deletions(-) create mode 100644 src/main/java/com/ruoyi/project/tool/redis/RedisConfig.java create mode 100644 src/main/java/com/ruoyi/project/tool/redis/RedisTestController.java create mode 100644 src/main/java/com/ruoyi/project/tool/redis/RedisUtils.java diff --git a/pom.xml b/pom.xml index 3fbb5d49..d4477850 100644 --- a/pom.xml +++ b/pom.xml @@ -1,6 +1,7 @@ - + 4.0.0 com.ruoyi @@ -44,14 +45,8 @@ org.springframework.boot spring-boot-starter - + @@ -114,10 +109,10 @@ - com.alibaba - druid-spring-boot-starter - ${druid.version} - + com.alibaba + druid-spring-boot-starter + ${druid.version} + @@ -181,7 +176,7 @@ ${bitwalker.version} - + org.springframework spring-context-support @@ -219,14 +214,14 @@ - + io.springfox springfox-swagger2 ${swagger.version} - + io.springfox springfox-swagger-ui @@ -239,7 +234,7 @@ jsoup ${jsoup.version} - + org.apache.poi @@ -247,6 +242,13 @@ 3.9 + + + org.springframework.boot + spring-boot-starter-redis + 1.4.7.RELEASE + + diff --git a/src/main/java/com/ruoyi/project/tool/redis/RedisConfig.java b/src/main/java/com/ruoyi/project/tool/redis/RedisConfig.java new file mode 100644 index 00000000..9a6384b8 --- /dev/null +++ b/src/main/java/com/ruoyi/project/tool/redis/RedisConfig.java @@ -0,0 +1,41 @@ +package com.ruoyi.project.tool.redis; + + +import org.springframework.cache.annotation.CachingConfigurerSupport; +import org.springframework.cache.annotation.EnableCaching; +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.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +import com.fasterxml.jackson.databind.ObjectMapper; +/** + * Redis配置类 + * @author wangchl + * + */ +@Configuration +@EnableCaching +public class RedisConfig extends CachingConfigurerSupport{ + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate<>(); + template.setConnectionFactory(connectionFactory); + + //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值 + Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class); + + ObjectMapper mapper = new ObjectMapper(); + mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); + serializer.setObjectMapper(mapper); + + template.setValueSerializer(serializer); + //使用StringRedisSerializer来序列化和反序列化redis的key值 + template.setKeySerializer(new StringRedisSerializer()); + template.afterPropertiesSet(); + return template; + } + +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/project/tool/redis/RedisTestController.java b/src/main/java/com/ruoyi/project/tool/redis/RedisTestController.java new file mode 100644 index 00000000..b64f5e57 --- /dev/null +++ b/src/main/java/com/ruoyi/project/tool/redis/RedisTestController.java @@ -0,0 +1,30 @@ +package com.ruoyi.project.tool.redis; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + + +/** + * 测试类 + * @author Administrator + * + */ +@Controller +@RequestMapping(value="/redis") +public class RedisTestController { + + @Autowired + private RedisUtils redisUtils; + + @GetMapping("/test") + public void findUser() { + Integer id = 123456; + + redisUtils.set("121233", id); + System.out.println(redisUtils.get("121233")); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/project/tool/redis/RedisUtils.java b/src/main/java/com/ruoyi/project/tool/redis/RedisUtils.java new file mode 100644 index 00000000..960125ef --- /dev/null +++ b/src/main/java/com/ruoyi/project/tool/redis/RedisUtils.java @@ -0,0 +1,194 @@ +package com.ruoyi.project.tool.redis; + +import java.io.Serializable; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.HashOperations; +import org.springframework.data.redis.core.ListOperations; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.SetOperations; +import org.springframework.data.redis.core.ValueOperations; +import org.springframework.data.redis.core.ZSetOperations; +import org.springframework.stereotype.Service; + +/** + * Redis工具类 + * @author wangchl + * + */ +@Service +public class RedisUtils { + @Autowired + private RedisTemplate redisTemplate; + /** + * 写入缓存 + * @param key + * @param value + * @return + */ + public boolean set(final String key, Object value) { + boolean result = false; + try { + ValueOperations operations = redisTemplate.opsForValue(); + operations.set(key, value); + result = true; + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + /** + * 写入缓存设置时效时间 + * @param key + * @param value + * @return + */ + public boolean set(final String key, Object value, Long expireTime) { + boolean result = false; + try { + ValueOperations operations = redisTemplate.opsForValue(); + operations.set(key, value); + redisTemplate.expire(key, expireTime, TimeUnit.SECONDS); + result = true; + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + /** + * 批量删除对应的value + * @param keys + */ + public void remove(final String... keys) { + for (String key : keys) { + remove(key); + } + } + + /** + * 批量删除key + * @param pattern + */ + public void removePattern(final String pattern) { + Set keys = redisTemplate.keys(pattern); + if (keys.size() > 0) + redisTemplate.delete(keys); + } + /** + * 删除对应的value + * @param key + */ + public void remove(final String key) { + if (exists(key)) { + redisTemplate.delete(key); + } + } + /** + * 判断缓存中是否有对应的value + * @param key + * @return + */ + public boolean exists(final String key) { + return redisTemplate.hasKey(key); + } + /** + * 读取缓存 + * @param key + * @return + */ + public Object get(final String key) { + Object result = null; + ValueOperations operations = redisTemplate.opsForValue(); + result = operations.get(key); + return result; + } + /** + * 哈希 添加 + * @param key + * @param hashKey + * @param value + */ + public void hmSet(String key, Object hashKey, Object value){ + HashOperations hash = redisTemplate.opsForHash(); + hash.put(key,hashKey,value); + } + + /** + * 哈希获取数据 + * @param key + * @param hashKey + * @return + */ + public Object hmGet(String key, Object hashKey){ + HashOperations hash = redisTemplate.opsForHash(); + return hash.get(key,hashKey); + } + + /** + * 列表添加 + * @param k + * @param v + */ + public void lPush(String k,Object v){ + ListOperations list = redisTemplate.opsForList(); + list.rightPush(k,v); + } + + /** + * 列表获取 + * @param k + * @param l + * @param l1 + * @return + */ + public List lRange(String k, long l, long l1){ + ListOperations list = redisTemplate.opsForList(); + return list.range(k,l,l1); + } + + /** + * 集合添加 + * @param key + * @param value + */ + public void add(String key,Object value){ + SetOperations set = redisTemplate.opsForSet(); + set.add(key,value); + } + + /** + * 集合获取 + * @param key + * @return + */ + public Set setMembers(String key){ + SetOperations set = redisTemplate.opsForSet(); + return set.members(key); + } + + /** + * 有序集合添加 + * @param key + * @param value + * @param scoure + */ + public void zAdd(String key,Object value,double scoure){ + ZSetOperations zset = redisTemplate.opsForZSet(); + zset.add(key,value,scoure); + } + + /** + * 有序集合获取 + * @param key + * @param scoure + * @param scoure1 + * @return + */ + public Set rangeByScore(String key,double scoure,double scoure1){ + ZSetOperations zset = redisTemplate.opsForZSet(); + return zset.rangeByScore(key, scoure, scoure1); + } +} \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 5ca98dfe..a34a5f4d 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -100,4 +100,13 @@ gen: # 自动去除表前缀,默认是true autoRemovePre: true # 表前缀(类名不会包含表前缀) - tablePrefix: sys_ \ No newline at end of file + tablePrefix: sys_ +redis: + host: 127.0.0.1 + port: 6379 + timeout: 20000 + pool: + max-active: 8 + min-idle: 0 + max-idle: 8 + max-wait: -1 \ No newline at end of file