Spring下redis的配置

來源:互聯網
上載者:User

標籤:opera   必須   max   let   ons   批量   boolean   turn   over   

這個項目用到redis,所以學了一下怎樣在Spring架構下配置redis。

1、首先是在web.xml中添加Spring的設定檔。

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">    <display-name>common design</display-name>        <context-param>          <param-name>webAppRootKey</param-name>          <param-value>webapp.root</param-value>      </context-param>         <!-- 添加Spring mybatis的設定檔 -->    <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath:applicationContext.xml,classpath*:mybatis-config.xml</param-value>    </context-param>    <listener>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener>        <servlet>      <servlet-name>springmvc</servlet-name>      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>      <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath:springmvc-servlet.xml</param-value>        </init-param>  </servlet>  <servlet-mapping>      <servlet-name>springmvc</servlet-name>     <url-pattern>/*</url-pattern>  </servlet-mapping></web-app>

2、然後是redis的設定檔(redis-config.xml)檔案。

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"    xsi:schemaLocation="     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd     http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.2.xsd"    default-autowire="byName" default-lazy-init="true">    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">        <property name="maxIdle" value="${redis.maxIdle}" />        <property name="maxWaitMillis" value="${redis.maxWait}" />        <property name="testOnBorrow" value="${redis.testOnBorrow}" />    </bean>    <!-- redis伺服器中心 -->    <bean id="connectionFactory"        class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">        <property name="poolConfig" ref="poolConfig" />        <property name="port" value="${redis.port}" />        <property name="hostName" value="${redis.host}" />        <property name="password" value="${redis.password}" />        <property name="timeout" value="${redis.timeout}"></property>    </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="redisUtil" class="com.zkxl.fep.redis.RedisUtil">        <property name="redisTemplate" ref="redisTemplate" />    </bean></beans>

在Spring的設定檔中引用redis的設定檔

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"    xsi:schemaLocation="     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd     http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.2.xsd"    default-autowire="byName" default-lazy-init="true">    <context:annotation-config/>     <context:component-scan base-package="com.test.fep" />        <!-- 增加redis的properties檔案 -->    <context:property-placeholder location="classpath*:jdbc.properties,classpath*:redis.properties" />        <import resource="datasource.xml"/>    <!-- 匯入redis的設定檔 -->    <import resource="redis-config.xml"/>    </beans>

3、建立redis.properties,裡麵包含redis串連需要的配置資訊

#redis setting  redis.host=127.0.0.1redis.port=6379redis.password=123456redis.maxIdle=100redis.maxActive=300redis.maxWait=1000redis.testOnBorrow=trueredis.timeout=100000fep.local.cache.capacity =10000

一定要注意,每行後面千萬不要有空格,我就是因為這個問題卡了一兩個小時= =

4、編寫RedisUtil.java,裡面放有redis的增刪改查操作。

package com.test.fep.redis;import java.io.Serializable;  import java.util.Set;  import java.util.concurrent.TimeUnit;  import org.springframework.data.redis.core.RedisTemplate;  import org.springframework.data.redis.core.ValueOperations;  public class RedisUtil {    private RedisTemplate<Serializable, Object> redisTemplate;    /**     * 大量刪除對應的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 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) {            logger.error("set cache error", e);        }        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) {            logger.error("set cache error", e);        }        return result;    }        public long increment(final String key , long delta){         return redisTemplate.opsForValue().increment(key, delta);    }    public void setRedisTemplate(RedisTemplate<Serializable, Object> redisTemplate) {        this.redisTemplate = redisTemplate;    }}

5、在功能代碼中調用RedisUtil類中的方法,

package com.test.fep.service.impl;import java.math.BigDecimal;import java.util.Date;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.test.fep.domain.SysAppLoginToken;import com.test.fep.mapper.SysAppLoginTokenMapper;import com.test.fep.redis.RedisUtil;import com.test.fep.service.AuthService;import net.sf.json.JSONObject;@Service("authService")public class AuthServiceImpl implements AuthService{    @Autowired    private SysAppLoginTokenMapper sysAppLoginTokenMapper ;    @Autowired    private RedisUtil redisUtil;  //記得注入        @Override    public SysAppLoginToken verification(String tokenId) {        SysAppLoginToken token = null;        if (redisUtil.exists(tokenId)) {            token = (SysAppLoginToken) redisUtil.get(tokenId);  //從緩衝中尋找token        }else{            token = sysAppLoginTokenMapper.selectByPrimaryKey(tokenId) ;            redisUtil.set(tokenId, token);    //將token寫入緩衝         }                return null;    }}

好了,到這裡就在一個項目中完整地使用了redis。

還需要注意的一點是,所有儲存在Redis中的介面都必須要實現Serializable介面

Spring下redis的配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.