spring 、Redis緩存配置

在spring配置文件中加入以下配置:
java

<!-- 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代碼中的使用:redis

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();
	}
	}
相關文章
相關標籤/搜索