在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