本文共 2454 字,大约阅读时间需要 8 分钟。
org.springframework.boot spring-boot-starter-data-redis 2.4.5 org.apache.commons commons-pool2 com.fasterxml.jackson.core jackson-core 2.9.2 com.fasterxml.jackson.core jackson-annotations 2.9.2 com.fasterxml.jackson.core jackson-databind 2.9.2
2 配置文件
在这里插入代码片
3 测试
@Autowired RedisTemplate redisTemplate; @Test void contextLoads() { redisTemplate.opsForValue().set("a","as"); }127.0.0.1:6379> keys *1) "\xac\xed\x00\x05t\x00\x01a" 乱码 是因为没有序列化 必须序列化
4 序列化
spring jdk 自己序列化 我们要自己去定义序列化对象 转成 json 可以 但是 直接传递对象 会说序列化错误 在 对象后面 写
@Data@AllArgsConstructor@NoArgsConstructor@Componentpublic class User implements Serializable { private String name; private int age;}
自己写序列化 拿走直接用
@Configurablepublic class RedisConfig { // 编写自己 redisTemplate @Bean @SuppressWarnings("all") public RedisTemplateredisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { RedisTemplate template = new RedisTemplate(); template.setConnectionFactory(redisConnectionFactory); // 自定义序列化开始 Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.serialize(om); //string 序列化 StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); // key 使用string序列化 template.setKeySerializer(stringRedisSerializer); // hashkey 使用string序列化 template.setHashKeySerializer(stringRedisSerializer); // key 使用value序列化 template.setValueSerializer(jackson2JsonRedisSerializer); template.setHashValueSerializer(jackson2JsonRedisSerializer); template.afterPropertiesSet(); // 自定义序列化结束 return template; }}
总结
1 导包 2redisTemplate.opsForValue().set(“user”,user); 跟正常redis操作一样 3 写对象 对象必须序列化 不然会报错 不想序列化 传json 4 自定义序列化 是为了解决自带的 有转义字符 5 写redieUtil 1 过期时间 2 key 是否存在 3 删除 一个 多个key object。。。 4 普通缓存放入 5 增加几 6 减少几个 7 hash map set转载地址:http://oijq.baihongyu.com/