Redis存储List<Map<String, Object>>
2017-11-06 21:07
706 查看
这两天做排行榜的缓存,在对List容器进行序列化时,报reditTemplate未被定义的错误.查了一些资料大致了解了Springboot中使用redis的一些之前没用到过得内容. 首先StringRedisTemplate使用的是StringRedisSerializer RedisTemplate使用的是JdkSerializationRedisSerializer
我们先实现对象的序列化接口:
public class RedisObjectSerializer implements RedisSerializer<Object> { private Converter<Object, byte[]> serializer = new SerializingConverter(); private Converter<byte[], Object> deserializer = new DeserializingConverter(); static final byte[] EMPTY_ARRAY = new byte[0]; @Override public Object deserialize(byte[] bytes) { if (isEmpty(bytes)) { return null; } try { return deserializer.convert(bytes); } catch (Exception ex) { throw new SerializationException("Cannot deserialize", ex); } } @Override public byte[] serialize(Object object) { if (object == null) { return EMPTY_ARRAY; } try { return serializer.convert(object); } catch (Exception ex) { return EMPTY_ARRAY; } } private boolean isEmpty(byte[] data) { return (data == null || data.length == 0); } }
然后配置针对List
@Configuration public class RedisConfig extends CachingConfigurerSupport { @Bean public RedisTemplate<String, List<Map<String, Object>>> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, List<Map<String, Object>>> template = new RedisTemplate<String, List<Map<String, Object>>>(); template.setConnectionFactory(redisConnectionFactory); template.setKeySerializer(new StringRedisSerializer()); template.setValueSerializer(new RedisObjectSerializer()); return template; } }
然后就可以进行 get 和 set的正常调用了:
redisTemplate.opsForValue().set(KEY_RANK_DOWNLOAD, resultList); List<Map<String, Object>> value = redisTemplate.opsForValue().get(KEY_RANK_DOWNLOAD);
详细了解更多关于redis对数据的操作,可以查看Spring Data Redis
相关文章推荐
- 行专列,拆分json,实现数据的展示。Map<String, Object>存储多个相同的key,List<Map<String, Object>>
- Android中List与Map<String,Object>及SimpleAdapter用来存储数据并展示出来的联合用法
- 【问题解决】Redis存储Hash-Map<String,Object>时无法序列化问题
- 遍历List<Map<String,Object>>
- List<Map<String,Object>>使用Java代码遍历以获取String,Object的值
- List<Map<String,Object>> 的快速排序
- List<Map<String,Object>>取值知识点
- List<Map<String,Object>>使用Java代码遍历以获取String,Object的值
- java中对List<Map<String,Object>>中的中文汉字排序
- List<Map<String,Object>> 不写limit在 Controller里面分页
- 将Map<String,Object> 转String存储数据库
- stirng转json,String转成List<Map<String,object>>,然后转成json
- 用EL表达式获取List<Map<String,Object>>里面的值
- List<Map<String,Object>>使用Java代码遍历以获取String,Object的值
- List<Map<String,Object>>集合根据map里面的一个字段排序
- 两个List<Map<String, Object>>之间的数值交换
- java 后台使用gson 将json字符串转换为List<Map<String,object>> 数组
- 取出List<Map<String,Object>>里面Map的key:value值
- Java List<Map<String, Object>>生成树
- Json转map和List<Map<String,Object>>