您的位置:首页 > 编程语言 > Java开发

在springmvc中配置jedis:

2016-02-24 21:10 495 查看
主要学习https://github.com/thinkgem/jeesite。一下代码均参考于此并稍作修改。

1.jedis

首先,需要添加jedis:

<!--jedis-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>


2.applicationContext-jedis.xml

然后,springmvc完成基本配置。添加jedispool的bean即可。在spring容器中添加applicationContext-jedis.xml:

在applicationContext-jedis.xml中添加:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <!-- 加载配置属性文件 -->
<context:property-placeholder ignore-unresolvable="true" location="classpath:db.properties" />

<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="300"/> <!--最大能够保持idel状态的对象数-->
<property name="maxTotal" value="60000"/><!--最大分配的对象数-->
<property name="testOnBorrow" value="true"/><!--当调用borrow Oject方法时,是否进行有效性检查-->
</bean>

<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg index="0" ref="jedisPoolConfig"/>
<constructor-arg index="1" value="${redis.host}"/>
<constructor-arg index="2" value="${redis.port}" type="int"/>
<constructor-arg index="3" value="${redis.timeout}" type="int"/>
<constructor-arg index="4" value="${redis.auth}"/>
</bean>
</beans>


注解:参考的源码中的jedisPool配置只有三个参数:config,host,port。我复制后的结果总是getResource失败,因为我的redis添加了auth,所以猜测是不是没通过auth的原因。于是打开JedisPool的源码:

/**
* 获取list缓存
* @param key
* @return
*/
public static List<String> getList(String key){
key = addDatabaseName(key);
List<String> value = null;
Jedis jedis = null;
try {
jedis = getResource();
value = jedis.lrange(key, 0, -1);
logger.debug("getList {}={}",key,value);
} catch (Exception e) {
logger.warn("getList {}失败:{}",key,e);
e.printStackTrace();
} finally {
jedis.close();
}
return value;
}

/**
* 获取list缓存,元素是object
* @param key
* @return
*/
public static List<Object> getObjectList(String key){
key = addDatabaseName(key);
List<Object> value = null;
Jedis jedis = null;
try {
jedis = getResource();
List<byte[]> list = jedis.lrange(getBytesKey(key), 0, -1);
value = Lists.newArrayList();
for (byte[] bytes : list) {
value.add(toObject(bytes));
}
logger.debug("getObjectList {}={}",key,value);
}catch (Exception e){
logger.warn("getObjectList {} 失败:{}",key,e);
e.printStackTrace();
}finally {
jedis.close();
}
return value;
}

/**
* 设置list缓存
* @param key
* @param value
* @param cacheSeconds
* @return
*/
public static long setList(String key,List<String> value,int cacheSeconds){
key = addDatabaseName(key);
long result = 0;
Jedis jedis = null;
try {
jedis = getResource();
jedis.del(key);
String[] arr = new String[value.size()];
value.toArray(arr);
result = jedis.rpush(key,arr);
if (cacheSeconds!=0){
jedis.expire(key,cacheSeconds);
}
logger.debug("setList {}={}",key,value);
}catch (Exception e){
logger.warn("setList {} 错误:",key,e);
e.printStackTrace();
}finally {
jedis.close();
}
return result;
}

/**
* 设置list缓存,list的元素为object
* @param key
* @param value
* @param cacheSeconds
* @return
*/
public static long setObjectList(String key,List<Object> value ,int cacheSeconds){
key = addDatabaseName(key);
long result = 0;
Jedis jedis = null;
try {
jedis = getResource();
jedis.del(key);
ArrayList<byte[]> list = Lists.newArrayList();
for (Object o : value) {
list.add(toBytes(o));
}
byte[] []arr = new byte[list.size()][];
list.toArray(arr);
result = jedis.rpush(getBytesKey(key),arr);
if(cacheSeconds!=0){
jedis.expire(key,cacheSeconds);
}
logger.debug("setObjectList {}={}",key,value);
}catch (Exception e){
logger.warn("setObjectList {} 错误:{}",key,e);
e.printStackTrace();
}
return result;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: