使用Spring的spring-data-redis插件开发Redis客户端

简述

Spring把专门的数据操作独立封装在spring-data系列中,spring-data-redis是针对Redis的独立封装,主要是将jedis、jredis、rjc以及srp等Redis Client进行了封装,同时支持事务。

客户端配置文件

对象池配置

<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
	<property name="maxActive" value="${redis.pool.maxActive}" />
	<property name="maxIdle" value="${redis.pool.maxIdle}" />
	<property name="maxWait" value="${redis.pool.maxWait}" />
</bean>

JedisConnectionFactory配置文件

<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="masterHost" value="${redis.master.host}"/>
	<property name="masterPort" value="${reids.master.port}"/>
	<property name="timeOut" value="${redis.pool.timeout}" />
    <property name="poolConfig" ref="jedisPoolConfig" />
</bean>

RedisTemplate类的配置文件

<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" p:connection-factory-ref="jedisConnectionFactory" />

示例代码

//接口类
public class CacheService{
    //传入参数final标示,为了禁止方法内修改
	public void add(final String key,String value);
	public void get(final String key);
}
//接口实现类
public class CacheServiceImpl implements CacheService{
	@Resource
	Private RedisTemplate redisTemplate;
	@Override
	public void add(final String key,String value){
		//实现会掉,方便控制事务
		redisTemplate.execute(new RedisCallback<Object>(){
			@Override
			public Object doInRedis(RedisConnection conn) throws DataAccessException{
			    //序列化参数
			    byte[] key=redisTemplate.getStringSerializer().serialize("key_"+key);
			    byte[] value=redisTemplate.getStringSerializer().serialize("value_"+value);
				//redis的set方法
				conn.set(key,value);
				return null;
			}
		});
	}
	
   @Override
   public String get(final String key){
   		return redisTemplate.execute(new RedisCallback<String>{
   			@Override
   			public String doInRedis(RedisConnection conn){
   				byte[] key=redisTemplate.getStringSerializer().serialize("key_"+key);
   				if(conn.exists(key)){
   					byte[] value=redisTemplate.getStringSerializer().deserialize(value);
   				}
   			}
   		});
   }
}

更多的使用方法参考Spring Data Redis

----EOF-----

Categories: redis Tags: redis