项目地址
Maven引入
<dependency> |
Spring引入
<import resource="classpath:spring-redis.xml" /> |
Api使用说明
ps.本次版本增加了namespace、泛型的支持(存、取直接使用java对象),namespace可以有效的避免key名称冲突和对以后做sharding提供了基础,泛型则是提升使用友好度,本次版本包装了驱动(jedis)的95%的方法,有一些性能不好的方法没有开放,新增了一些使用上更加友好的方法。
常规操作的command实现:RedisClientImpl
二进制操作的command实现:BinaryRedisClientImpl
两者都支持直接存、取java对象,区别在于前者序列化为json以string的方式发送到redis服务器,后者序列化为byte[]以字节方式发送到redis服务,通过redis-cli工具前者可以很明确的看到存的值,后者看到的是二进制编码。
接口方法
回调接口
cn.tsoft.framework.redis.callback.GetDataCallBack
接口提供两个方法
/** |
ps.int getExpiredTime();这个方法并不是所有命令都支持(hget系列不支持,因为hash的attr是不支持ttl设置的,ttl必须设置在hash的key上并不是hash的attr上),因此不支持ttl的命令就采用默认的空实现。
在使用get和hget方法时,如果key返回为null,则通过该接口的R invoke();
方法获取数据并放到redis中。
hgetAllObjects方法上的GetDataCallBack
如果在get方法获取不到值时不想走数据回调时传入null即可。
示例://不设置回调
Metadata resule = redisClient.get(bizkey, nameSpace, Metadata.class, null);
List<Metadata > resule = redisClient.get(bizkey, nameSpace, new TypeReference<List<Metadata>>() {}, null);
//设置回调
List<Long> resule = redisClient.get(bizkey, nameSpace, new TypeReference<List<Long>>() {}, new GetDataCallBack<List<Long>>() {
public int getExpiredTime() {
return 3600;
}
public List<Long> invoke() {
return getMetadataSourceProvider().getUserRoles(uid);
}
});
List<Long> resule = redisClient.hgetObject(bizkey, nameSpace, String.valueOf(uid), new TypeReference<List<Long>>() {}, new GetDataCallBack<List<Long>>() {
public int getExpiredTime() {
return 0;
}
public List<Long> invoke() {
return getMetadataSourceProvider().getUserRoles(uid);
}
});
参数说明
get*方法的参数Class
Metadata value = redisClient.get(bizkey, nameSpace, Metadata.class, null); |
综合使用示例
redisClient.set(bizkey, namespace, new Metadata(), 60);//set并设置ttl60秒 |