您的位置:首页 > 数据库 > Redis

spring 、Redis缓存配置

2016-01-21 00:00 567 查看
摘要: spring 、Redis缓存配置

在spring配置文件中加入如下配置:

<!-- redis -->
<bean id="redisDataSource" class="redis.clients.jedis.JedisPoolConfig"
p:maxIdle="300" p:maxWaitMillis="1000" p:testOnBorrow="true"
p:maxTotal="600">
</bean>

<bean id="redisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.pwd}"
p:pool-config-ref="redisDataSource" />

<bean id="stringRedisSerializer"
class="org.springframework.data.redis.serializer.StringRedisSerializer" />

<bean id="jdkSerializationRedisSerializer"
class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />

<bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"
p:keySerializer-ref="stringRedisSerializer" p:valueSerializer-ref="jdkSerializationRedisSerializer"
p:connectionFactory-ref="redisConnectionFactory" />

java代码中的使用:

import org.springframework.data.redis.core.RedisTemplate;

public class RedisService {
@Resource(name = "redisTemplate")
private RedisTemplate<String, Object> redisTemplate;

/**
* 保存数据
*
* @param key
* @param obj
* @return false :失败,true:成功
*/
public boolean insertObject(final String key, final Object obj) {

return redisTemplate.execute(new RedisCallback<Boolean>() {

@Override
public Boolean doInRedis(RedisConnection connection)
throws DataAccessException {
RedisSerializer<String> serializer = getRedisSerializer();
byte[] keys = serializer.serialize(key);

if (null != connection.get(keys)) {
return false;
}
byte[] values = serializer.serialize(toJson(obj));
return connection.setNX(keys, values);
}
});
}
/**
* 修改数据
*
* @param key
* @param obj
* @return false :失败,true:成功
*/
public boolean updateObject(final String key, final Object obj) {
return redisTemplate.execute(new RedisCallback<Boolean>() {
@Override
public Boolean doInRedis(RedisConnection connection)
throws DataAccessException {
RedisSerializer<String> serializer = getRedisSerializer();
byte[] keys = serializer.serialize(key);
if (null != connection.get(keys)) {
if (1 == connection.del(keys)) {
byte[] values = serializer.serialize(toJson(obj));
return connection.setNX(keys, values);
}
return false;
}
return false;
}
});
}
/**
* 删除数据
*
* @param key
* @return false :失败,true:成功
*/
public boolean deleteObject(final String key) {
return redisTemplate.execute(new RedisCallback<Boolean>() {
@Override
public Boolean doInRedis(RedisConnection connection)
throws DataAccessException {
RedisSerializer<String> serializer = getRedisSerializer();
byte[] keys = serializer.serialize(key);
if (1 == connection.del(keys)) {
return true;
}
return false;
}
});

}
/**
* 按Key查询
* @param key
* @return
*/
private String queryDataFromRedis(final String key) {
return redisTemplate.execute(new RedisCallback<String>() {
public String doInRedis(RedisConnection connection)
throws DataAccessException {
RedisSerializer<String> serializer = getRedisSerializer();
byte[] keys = serializer.serialize(key);
byte[] values = connection.get(keys);
if (values == null) {
return null;
}
return serializer.deserialize(values);
}
});
}
private RedisSerializer<String> getRedisSerializer() {
return redisTemplate.getStringSerializer();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis java