在Titan中,不仅可以使用各数据库提供的原生连接池去操作数据库,框架也已经良好的集成了Mysql,Redis,MongoDB等数据库,并且最让人惊喜的是,无需配置任何多余的框架配置,框架就可以进行读取原生数据库配置并使用,这里就给大家简单介绍一下框架集成后对于Redis来说如何去使用。
1.Titan Framework redis配置
我们需要在配置文件下进行如下配置,和原生的配置参数是一样的:
#最大分配的对象数 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的扫描器加载配置文件即可,这和原生的配置也是一样的。
<?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的简单使用
我们知道redis里总共提供4种数据结构,分别是String、Hash、Set、List、而Set又分为Set和zset,在Titan Framework集成操作这些数据结构的方法,对于Set而言,则只提供了zset这一种数据结构,不过我们仍然可以将它作为Set使用。
在使用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); } } |
控制台打印结果为:
World
12345678945613247<============> asdfghjkl
abc
def
Bbb