概述
用Redis对文章点赞做一个简单实现,有两个参数,一个userId,一个文章id,如果用户id已存在redis中,则将文章id拼接到现有文章id后,否则将用户id和文章id存放到redis中
demo
代码如下
@PostConstruct
public void init() {
RedisSerializer redisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(redisSerializer);
redisTemplate.setValueSerializer(redisSerializer);
redisTemplate.setHashKeySerializer(redisSerializer);
redisTemplate.setHashValueSerializer(redisSerializer);
}
@GetMapping("/redisTest/{article}/{userid}")
public void set(@PathVariable String article,@PathVariable String userid) throws JsonProcessingException {
String articles = (String) redisTemplate.opsForHash().get("USER:INFO:DATA",userid);
Set<String> set = articles == null ? new HashSet<>() : new ObjectMapper().readValue(articles, new HashSet<String>().getClass());
set.add(article);
redisTemplate.opsForHash().put("USER:INFO:DATA",userid,new ObjectMapper().writeValueAsString(set));
}
init方法,用于解决存放redis中的数据乱码问题,而
set方法,尝试从redis中取数据,如果用户id已存在redis中,则将文章id拼接到现有文章id后,否则将用户id和文章id存放到redis中,如下