在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
![](http://static.javashuo.com/static/loading.gif)