zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    1058 A+B in Hogwarts (20)
    1046 Shortest Distance (20)
    1061 Dating (20)
    1041 Be Unique (20)
    1015 Reversible Primes (20)(20 分)
    pat 1027 Colors in Mars (20)
    PAT 1008 Elevator (20)
    操作系统 死锁
    Ajax的get方式传值 避免& 与= 号
    让IE浏览器支持CSS3表现
  • 原文地址:https://www.cnblogs.com/qin-derella/p/6430313.html
Copyright © 2011-2022 走看看