spring 、Redis緩存配置
來自: http://my.oschina.net/u/2317118/blog/607397
在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();
}
}
本文由用戶 102niu 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!