Redis提供了多种序列化方式来存储数据。以下是两种常用的Redis序列化方式:
1. StringRedisSerializer:这是StringRedisTemplate默认的序列化方式。它将key和value都以字符串的形式进行序列化。这种方式对开发者友好,轻量级且效率较高。
2. GenericToStringSerializer:这种序列化方式可以将任意对象转换为字符串进行存储。它不需要对象实现Serializable接口,因此可以序列化非Java对象。但是,它的缺点是存储的结果非常庞大,大约是JSON格式的5倍左右,这会消耗Redis服务器的大量内存。
以下是两种Redis序列化方式的示例代码:
1. 使用StringRedisSerializer序列化方式:
StringRedisTemplate redisTemplate = new StringRedisTemplate();
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
redisTemplate.opsForValue().set("key", "value");
String value = redisTemplate.opsForValue().get("key");
System.out.println(value); // 输出:value
2. 使用GenericToStringSerializer序列化方式:
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericToStringSerializer<>(Object.class));
redisTemplate.opsForValue().set("key", new User("John", 25));
User user = (User) redisTemplate.opsForValue().get("key");
System.out.println(user.getName()); // 输出:John