Redis集成(spring-data-redis)

1.pom.xml引入

demo-base引入html

說明:java

jedis:redis官網對java語言提供支持。可單獨使用。web

spring-data-redis:spring對jedis集成。redis

 

2.配置

在配置在demo-web下spring

redis.properties:瀏覽器

redis.host=127.0.0.1
redis.port=6379
redis.timeout=15000
redis.password=
redis.database=2

spring-mvc.xmlspring-mvc

<!--spring最多加載一個context:property-placeholder-->
<!--若是去掉jdbc.properties加載,demo-web啓動會提示找不對應變量值-->
<context:property-placeholder location="classpath:redis.properties,classpath*:jdbc.properties"/>

<!--將spring-redis引入spring中-->
<import resource="spring-redis.xml"/>

spring-redis.xmlmvc

<?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:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">

    <bean id="redisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <!--最大鏈接數-->
        <property name="maxTotal" value="30"/>
        <!--最大空閒數-->
        <property name="maxIdle" value="5"/>
        <!--最小空閒數-->
        <property name="minIdle" value="0"/>
        <!--達到最大鏈接數是否阻塞-->
        <property name="blockWhenExhausted" value="true"/>
        <!--最大鏈接數後最長阻塞時間-->
        <property name="maxWaitMillis" value="15000"/>
        <!--鏈接空閒的最小時間,可能被移除-->
        <property name="minEvictableIdleTimeMillis" value="60000"/>
        <!--鏈接空閒的最小時間,多餘最小空閒鏈接的將被移除-->
        <property name="softMinEvictableIdleTimeMillis" value="30000"/>
        <!--對於「空閒連接」檢測線程而言,每次檢測的連接資源的個數。默認爲3.-->
        <property name="numTestsPerEvictionRun" value="3"/>
        <!--空閒鏈接的檢測週期-->
        <property name="timeBetweenEvictionRunsMillis" value="60000"/>
        <!--當鏈接給調用者使用時,是否檢測空間超時-->
        <property name="testWhileIdle" value="false"/>
        <!--當鏈接給調用者使用時,是否檢測其有效性-->
        <property name="testOnBorrow" value="false"/>
        <!--歸還鏈接時,是否檢測其有效性-->
        <property name="testOnReturn" value="false"/>

    </bean>

    <bean id="connectionFactory"
          class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
          p:hostName="${redis.host}"
          p:port="${redis.port}"
          p:password="${redis.password}"
          p:database="${redis.database}"
          p:timeout="${redis.timeout}"
          p:poolConfig-ref="redisPoolConfig"/>

    <!--關於class說明-->
    <!--RedisTemplate:可操做對象,最終會將對象轉化爲字節(因此對象需支持序列化和反序列化)-->
    <!--StringRedisTemplate:操做對象是String類型-->
    <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
        <property name="connectionFactory" ref="connectionFactory"/>
        <!--是否開啓事務,支持@Transactional-->
        <property name="enableTransactionSupport" value="true"/>
    </bean>

</beans>

 

3.實例運行

RedisControllerapp

@Controller
@RequestMapping("redis")
public class RedisController {
    @Resource(name = "redisTemplate")
    private ValueOperations<String,String> stringOperations;

    //@Autowired
    //private StringRedisTemplate redisTemplate;

    @RequestMapping("setKeyValue")
    @ResponseBody
    public String setKeyValue(String key ,String value){
        //ValueOperations<String,String> stringOperations = redisTemplate.opsForValue();
        stringOperations.set(key,value);
        return stringOperations.get(key);
    }
}

說明:spa

  • 示例代碼使用@Resource(name="redisTemplate")進行redis數據類型-String操做類ValueOperations進行注入。
  • 若是使用StringRedisTemplate,將代碼中註釋放開便可

 

運行結果:

瀏覽器輸入http://localhost:8080/demo-web/redis/setKeyValue.do?key=123&value=123321

Redis查看

 

4.補充說明

1)redis五種數據類型以及對應操做接口

  • String=>ValueOperations:經常使用的字符串,數字。
  • Hash=>HashOperations:相等於HashMap。
  • List=>ListOperations:鏈表。
  • Set=>SetOperations:集合。
  • ZSet=>ZSetOperations:有序集合。相比集合,多一個score數值。

2)參考文章

http://www.cnblogs.com/luochengqiuse/category/710406.html

相關文章
相關標籤/搜索