• spring整合redis配置


    第一步:添加需要的jar包

        <!-- redis -->
          <dependency>
              <groupId>redis.clients</groupId>
              <artifactId>jedis</artifactId>
              <version>2.1.0</version>
          </dependency>
          <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>1.0.3.RELEASE</version>
          </dependency>

    第二步:配置文件

    redis.properties

    #redis setting
    redis.ip=127.0.0.1
    redis.port=6379
    redis.maxActive=1000
    redis.maxIdle=100
    redis.maxWait=1000
    redis.testOnBorrow=true

    spring-redis.xml

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
        
        <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
            <property name="maxActive" value="${redis.maxActive}" />
            <property name="maxIdle" value="${redis.maxIdle}" />
            <property name="maxWait" value="${redis.maxWait}" />
            <property name="testOnBorrow" value="${redis.testOnBorrow}" />
        </bean>
        <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
            <property name="connectionFactory" ref="connectionFactory" />
            <property name="keySerializer">
                <bean    class="org.springframework.data.redis.serializer.StringRedisSerializer" />
            </property>
            <property name="valueSerializer">
                <bean    class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
            </property>
        </bean>
        <bean id="connectionFactory"
            class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
            <property    name ="hostName"   value="${redis.ip}"   />   
            <property    name ="port"   value="${redis.port}"   />   
            <property    name ="poolConfig"   ref="poolConfig"   />   
        </bean>
        
        <bean id="redisTemplateTool"
            class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
            <property name="targetClass" value="com.org.qin.common.utils.redis.RedisUtil" />
            <property name="targetMethod" value="initRedis" />
            <property name="arguments" ref="redisTemplate" />
        </bean>
     
         
    </beans>

    spring-bean.xml

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
          <property name="order" value="1"/>  
          <property name="ignoreUnresolvablePlaceholders" value="true"/>  
          <property name="locations">  
            <list>  
                <value>classpath:config/prop/redis.properties</value>
            </list>  
          </property>  
        </bean>  

     第三步:工具类

    package com.org.qin.common.utils.redis;
    
    import java.io.Serializable;
    import java.util.concurrent.TimeUnit;
    
    import org.slf4j.LoggerFactory;
    import org.springframework.data.redis.core.RedisTemplate;
    
    import com.org.qin.common.constants.RedisConstants;
    
    public class RedisUtil {
    
        private static RedisTemplate<String, Serializable> redisTemplate;
    
        public static void initRedis(RedisTemplate<String, Serializable> redisTemplate) {
            RedisUtil.redisTemplate = redisTemplate;
        }
    
        public static void expire(String key, int seconds) {
            redisTemplate.expire(key, seconds, TimeUnit.SECONDS);
        }
    
        public static void delete(String key) {
            redisTemplate.delete(key);
            Object object = redisTemplate.opsForValue().get(key);
            System.out.println(object);
        }
    
        public static Object getObject(String key) {
            try{
    
                return redisTemplate.opsForValue().get(key);
            }
            catch(Throwable e){
                LoggerFactory.getLogger(RedisUtil.class).error("getObject", e);
            }
            return null;
        }
    
        public static void setObject(String key, Serializable object) {
            try{
                redisTemplate.opsForValue().set(key, object, RedisConstants.DEFAULT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
            }
            catch(Throwable e){
                LoggerFactory.getLogger(RedisUtil.class).error("setObject", e);
            }
        }
    
        public static void setObject(String key, Serializable object, long timeout) {
            try{
                redisTemplate.opsForValue().set(key, object, timeout, TimeUnit.SECONDS);
            }
            catch(Throwable e){
                LoggerFactory.getLogger(RedisUtil.class).error("setObject", e);
            }
        }
    
    }

    第四步:测试类

    package com.org.qin.controller.cache;
    
    import java.io.Serializable;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.org.qin.common.utils.redis.RedisUtil;
    
    @Controller
    @RequestMapping("redis")
    public class RedisController {
    
        /**
         * 查询指定缓存
         * 
         * @param request
         * @return
         */
        @RequestMapping("/getCache.htm")
        @ResponseBody
        public String getCache(HttpServletRequest request) {
            Map<String, Object> params = getRequestParams(request);
            return (String)RedisUtil.getObject((String)params.get("cacheKey"));
    
        }
    
        /**
         * 删除缓存
         * 
         * @param request
         * @return
         */
        @RequestMapping("/deleteCache.htm")
        @ResponseBody
        public String deleteCache(HttpServletRequest request, HttpServletResponse response) {
            Map<String, Object> params = getRequestParams(request);
            RedisUtil.delete((String)params.get("cacheKey"));
            return "ok!";
        }
    
        /**
         * 添加缓存
         * 
         * @param request
         * @return
         */
        @RequestMapping("/setCache.htm")
        @ResponseBody
        public String setCache(HttpServletRequest request, HttpServletResponse response) {
            Map<String, Object> params = getRequestParams(request);
            RedisUtil.setObject((String)params.get("cacheKey"), (Serializable)params.get("cacheData"));
    
            return "ok!";
        }
    
        /**
         * 功能描述: 获取请求参数
         * 
         * @param request
         * @return
         */
        @SuppressWarnings("unchecked")
        public static Map<String, Object> getRequestParams(HttpServletRequest request) {
            Map<String, String[]> parameter = request.getParameterMap();
            String[] obj;
            Set<Entry<String, String[]>> entries = parameter.entrySet();
            Map<String, Object> params = new HashMap<String, Object>(entries.size());
            for(Map.Entry<String, String[]> m : entries){
                obj = m.getValue();
                params.put(m.getKey(), (obj.length > 1) ? obj : obj[0]);
            }
            return params;
        }
    }

    测试地址

    http://localhost:12342/derella-web/redis/getCache.htm?cacheKey=test

    http://localhost:12342/derella-web/redis/setCache.htm?cacheKey=test&cacheData=testdata

    http://localhost:12342/derella-web/redis/deleteCache.htm?cacheKey=test

  • 相关阅读:
    一分钟了解Docker
    RobotFramework
    RobotFramework不同版本优劣势
    从零学习基于Python的RobotFramework自动化
    Python 接口自动化常用方法封装
    (转载)解决MySql 数据库 提示:1045 access denied for user 'root'@'localhost' using password yes
    (转载)html中div使用自动高度
    javascriptDOM对象之scrollTo()方法,滚动到页面指定位置
    CSS3之响应式布局
    Html5NodeJs安装less之千辛万苦CMD系列
  • 原文地址:https://www.cnblogs.com/qin-derella/p/6430313.html
Copyright © 2020-2023  润新知