在TitanFramework中使用集成Redis

在Titan中,不只可使用各數據庫提供的原生鏈接池去操做數據庫,框架也已經良好的集成了Mysql,Redis,MongoDB等數據庫,而且最讓人驚喜的是,無需配置任何多餘的框架配置,框架就能夠進行讀取原生數據庫配置並使用,這裏就給你們簡單介紹一下框架集成後對於Redis來講如何去使用。redis

1.Titan Framework redis配置spring

咱們須要在配置文件下進行以下配置,和原生的配置參數是同樣的:sql

#最大分配的對象數  
jedisPool.maxActive=20  
#最大可以保持idel狀態的對象數  
jedisPool.maxIdle=20  
#最小可以保持idel狀態的對象數  
jedisPool.minIdle=10  
#當池內沒有返回對象時,最大等待時間  
jedisPool.maxWait=-1  
#當調用borrow Object方法時,是否進行有效性檢查  
#指明是否在從池中取出鏈接前進行檢驗,若是檢驗失敗,則從池中去除鏈接並嘗試取出另外一個
jedisPool.testOnBorrow=true  
#在return給pool時,是否提早進行validate操做
jedisPool.testOnReturn =false
#當「鏈接池」中active數量達到閥值時,即「連接」資源耗盡時,鏈接池須要採起的手段, 默認爲1:
#0 : 拋出異常
#1 : 阻塞,直到有可用連接資源
#2 : 強制建立新的連接資源
jedisPool.whenExhaustedAction=1
#表示idle object evitor兩次掃描之間要sleep的毫秒數;
jedisPool.timeBetweenEvictionRunsMillis = 100000

#若是爲true,表示有一個idle object evitor線程對idle object進行掃描,若是validate失敗,此object會被從pool中drop掉;
#這一項只有在timeBetweenEvictionRunsMillis大於0時纔有意義;
jedisPool.testWhileIdle=true
#表示一個對象至少停留在idle狀態的最短期,而後才能被idle object evitor掃描並驅逐;
#這一項只有在timeBetweenEvictionRunsMillis大於0時纔有意義
jedisPool.minEvictableIdleTimeMillis=300000
#在minEvictableIdleTimeMillis基礎上,加入了至少minIdle個對象已經在pool裏面了。
#若是爲-1,evicted不會根據idle time驅逐任何對象。若是minEvictableIdleTimeMillis>0,則此項設置無心義,
#且只有在timeBetweenEvictionRunsMillis大於0時纔有意義
jedisPool.softMinEvictableIdleTimeMillis = -1
#表示idle object evitor每次掃描的最多的對象數
jedisPool.numTestsPerEvictionRun = 50  
#borrowObject返回對象時,是採用DEFAULT_LIFO(last in first out,即相似cache的最頻繁使用隊列),若是爲False,則表示FIFO隊列
jedisPool.lifo = true
#IP  
jedisPool.shard1.host=127.0.0.1
#Port  
jedisPool.shard1.port=6379
#password
#redis.password=
jedisPool.shard1.password=test
#客戶端超時時間單位是毫秒
redis.timeout=100000
#name
redis.name=queue
#database
redis.database=2數據庫

 

下面是Spring的XML配置文件,只須要使用Spring的掃描器加載配置文件便可,這和原生的配置也是同樣的。spring-mvc

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:mvc="http://www.springframework.org/schema/mvc" 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-3.1.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
   <context:annotation-config />
   <context:component-scan base-package="org.titan.framework org.titan.demo" />

   <bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="locations">
         <list>
            <value>file:**/conf/redis.properties</value>
         </list>
      </property>
      <property name="ignoreUnresolvablePlaceholders" value="true" />
   </bean>
   <import resource="application-redis-context.xml" />
</beans>數據結構

 

2.Titan Framework redis的簡單使用mvc

咱們知道redis裏總共提供4種數據結構,分別是String、Hash、Set、List、而Set又分爲Set和zset,在Titan Framework集成操做這些數據結構的方法,對於Set而言,則只提供了zset這一種數據結構,不過咱們仍然能夠將它做爲Set使用。app

在使用Titan Framework中,咱們須要實現StorageDataProcessor.Redis以獲取接口中已經實現的manager方法進行數據操做。框架

public class RedisDemo implements StorageDataProcessor.Redis {
   public void doDemo() {
      //String,經常使用的字符串類型
      manager().cache.save("2","world");
      String s = manager().cache.get("2");
      System.out.println(s);
      manager().cache.save("1","abc");
      //Hash,經過第二個參數field進行分割,適合存儲對象,每個field表明了對象的屬性名,而
      manager().table.save("123456","123","12345678945613247");
      manager().table.save("123456","456","asdfghjkl");
      String string1 = manager().table.load("123456","123");
      String string2 = manager().table.load("123456","456");
      System.out.println(string1+"<============>"+string2);
      //zset,有序集合,每一個元素都會關聯一個double類型的分數,經過這個分數來從小到大排序
      manager().index.add("111222",0,"abc");
      manager().index.add("111222",0,"def");
      Set<String> set = manager().index.all("111222");
      for (String sss : set) {
         System.out.println(sss);
      }
      //List,經常使用的有隊列操做,時間線等操做
      manager().queue.push("aaa","bbb");
      String aaa = manager().queue.pop("aaa");
      System.out.println(aaa);
   }
}ide

 

控制檯打印結果爲:

World

12345678945613247<============> asdfghjkl

abc

def

Bbb

相關文章
相關標籤/搜索