|
spring-data-redis序列化策略
spring-data-redis提供了多种serializer策略,这对使用jedis的开发者而言,实在是非常便捷。sdr提供了4种内置的serializer:
- JdkSerializationRedisSerializer:使用JDK的序列化手段(serializable接口,ObjectInputStrean,ObjectOutputStream),数据以字节流存储,jdk序列化和反序列化数据
- StringRedisSerializer:字符串编码,数据以string存储
- JacksonJsonRedisSerializer:json格式存储
- OxmSerializer:xml格式存储
其中JdkSerializationRedisSerializer和StringRedisSerializer是最基础的序列化策略,其中“JacksonJsonRedisSerializer”与“OxmSerializer”都是基于stirng存储,因此它们是较为“高级”的序列化(最终还是使用string解析以及构建java对象)。
RedisTemplate中需要声明4种serializer,默认为“JdkSerializationRedisSerializer”:
1) keySerializer :对于普通K-V操作时,key采取的序列化策略
2) valueSerializer:value采取的序列化策略
3) hashKeySerializer: 在hash数据结构中,hash-key的序列化策略
4) hashValueSerializer:hash-value的序列化策略
无论如何,建议key/hashKey采用StringRedisSerializer。 这redis服务端用命令行好查看 配置如下
1、maven配置
UTF-8
4.1.1.RELEASE
org.springframework
spring-context-support
${spring.version}
org.springframework.data
spring-data-redis
1.4.1.RELEASE
redis.clients
jedis
2.6.0
jar
compile
junit
junit
4.11
test
2、spring xml配置文件
配置jedis的缓冲池
配置ConnectionFactory
创建RedisTemplate
3、案例 private static ApplicationContext context = null;
private static RedisTemplate redisTemplate=null;
@org.junit.BeforeClass
public static void BeforeClass() {
if (context == null) {
System.out.println("ctx inited....");
context = new ClassPathXmlApplicationContext("spring-context.xml");
redisTemplate = context.getBean("redisTemplate",RedisTemplate.class);
}
}
1.String@Test
public void testString(){
ValueOperations opsForValue = redisTemplate.opsForValue();
opsForValue.set("string:name", "achuan");
opsForValue.set("string:id","1");
Object name = opsForValue.get("string:name");
assertNotNull(name);
assertEquals("achuan", name.toString());
}
2.List
说到List Redis 提供了类似于消息队列的操作, @Test
public void testList() {
ListOperations opsForList = redisTemplate.opsForList();
String keyName = "ListKey";
redisTemplate.delete(keyName);
opsForList.leftPush(keyName, "zhangsan");
opsForList.leftPush(keyName, "lisi");
opsForList.leftPushAll(keyName, "wangwu", "zhaoliu", "qianqi");
Long size = opsForList.size(keyName);
System.out.println("size:" + size);
for (long i = 0; i < size; i++) {
Object value = opsForList.index(keyName,i);
System.out.println("i:"+i+",value:"+value.toString());
}
Object leftPop = opsForList.leftPop(keyName);
System.out.println("after pop size:"+opsForList.size(keyName));
}
3 Hashes (SETS 自己看看吧。。)
今天就先到这里,Redis 还有很多东西,比如cache transcation 等等 看下目录结构 |
|
|