فهرست منبع

集成Redis,并封装常用方法

wangchl 6 سال پیش
والد
کامیت
b438c7c1ad

+ 20 - 18
pom.xml

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 
 	<groupId>com.ruoyi</groupId>
@@ -44,14 +45,8 @@
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter</artifactId>
-			<!--
-			 <exclusions>
-                <exclusion>
-                    <artifactId>spring-boot-starter-tomcat</artifactId>
-                    <groupId>org.springframework.boot</groupId>
-                </exclusion>
-            </exclusions>
-             -->
+			<!-- <exclusions> <exclusion> <artifactId>spring-boot-starter-tomcat</artifactId> 
+				<groupId>org.springframework.boot</groupId> </exclusion> </exclusions> -->
 		</dependency>
 
 		<!-- SpringBoot 测试 -->
@@ -114,10 +109,10 @@
 
 		<!--阿里数据库连接池 -->
 		<dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>druid-spring-boot-starter</artifactId>
-            <version>${druid.version}</version>
-        </dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>druid-spring-boot-starter</artifactId>
+			<version>${druid.version}</version>
+		</dependency>
 
 		<!--常用工具类 -->
 		<dependency>
@@ -181,7 +176,7 @@
 			<version>${bitwalker.version}</version>
 		</dependency>
 
-		<!--Spring框架基本的核心工具-->
+		<!--Spring框架基本的核心工具 -->
 		<dependency>
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-context-support</artifactId>
@@ -219,14 +214,14 @@
 			</exclusions>
 		</dependency>
 
-		<!-- swagger2-->
+		<!-- swagger2 -->
 		<dependency>
 			<groupId>io.springfox</groupId>
 			<artifactId>springfox-swagger2</artifactId>
 			<version>${swagger.version}</version>
 		</dependency>
 
-		<!-- swagger2-UI-->
+		<!-- swagger2-UI -->
 		<dependency>
 			<groupId>io.springfox</groupId>
 			<artifactId>springfox-swagger-ui</artifactId>
@@ -239,7 +234,7 @@
 			<artifactId>jsoup</artifactId>
 			<version>${jsoup.version}</version>
 		</dependency>
-		
+
 		<!-- excel工具 -->
 		<dependency>
 			<groupId>org.apache.poi</groupId>
@@ -247,6 +242,13 @@
 			<version>3.9</version>
 		</dependency>
 
+		<!-- spring整合redis -->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-redis</artifactId>
+			<version>1.4.7.RELEASE</version>
+		</dependency>
+
 	</dependencies>
 
 	<build>

+ 41 - 0
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<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
+	      RedisTemplate<Object, Object> 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;
+	   }
+
+}

+ 30 - 0
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"));
+    }
+
+   
+}

+ 194 - 0
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<Serializable, Object> 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<Serializable, Object> 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<Serializable> 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<Serializable, Object> 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<String, Object, Object>  hash = redisTemplate.opsForHash();
+        hash.put(key,hashKey,value);
+    }
+
+    /**
+     * 哈希获取数据
+     * @param key
+     * @param hashKey
+     * @return
+     */
+    public Object hmGet(String key, Object hashKey){
+        HashOperations<String, Object, Object>  hash = redisTemplate.opsForHash();
+        return hash.get(key,hashKey);
+    }
+
+    /**
+     * 列表添加
+     * @param k
+     * @param v
+     */
+    public void lPush(String k,Object v){
+        ListOperations<String, Object> list = redisTemplate.opsForList();
+        list.rightPush(k,v);
+    }
+
+    /**
+     * 列表获取
+     * @param k
+     * @param l
+     * @param l1
+     * @return
+     */
+    public List<Object> lRange(String k, long l, long l1){
+        ListOperations<String, Object> list = redisTemplate.opsForList();
+        return list.range(k,l,l1);
+    }
+
+    /**
+     * 集合添加
+     * @param key
+     * @param value
+     */
+    public void add(String key,Object value){
+        SetOperations<String, Object> set = redisTemplate.opsForSet();
+        set.add(key,value);
+    }
+
+    /**
+     * 集合获取
+     * @param key
+     * @return
+     */
+    public Set<Object> setMembers(String key){
+        SetOperations<String, Object> set = redisTemplate.opsForSet();
+        return set.members(key);
+    }
+
+    /**
+     * 有序集合添加
+     * @param key
+     * @param value
+     * @param scoure
+     */
+    public void zAdd(String key,Object value,double scoure){
+        ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
+        zset.add(key,value,scoure);
+    }
+
+    /**
+     * 有序集合获取
+     * @param key
+     * @param scoure
+     * @param scoure1
+     * @return
+     */
+    public Set<Object> rangeByScore(String key,double scoure,double scoure1){
+        ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
+        return zset.rangeByScore(key, scoure, scoure1);
+    }
+}

+ 10 - 1
src/main/resources/application.yml

@@ -100,4 +100,13 @@ gen:
   # 自动去除表前缀,默认是true
   autoRemovePre: true
   # 表前缀(类名不会包含表前缀)
-  tablePrefix: sys_
+  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