Redis存储商品热度
2022-05-31 22:58
3787 查看
项目中有一个需求,就是可以根据商品的热度进行排序
起初想着使用string类型来存储如:
sku:hotscore:商品的ID
但是这回有个问题,当商品数量多了那k-v岂不是得炸了,维护起来也非常不方便推荐做法:使用Redis的ZSET类型
/** * 给商品添加热度 * * @param skuId */ @Override public void incrHotScore(Long skuId) { // 点击一次redis热度就+1 Double score = stringRedisTemplate.opsForZSet().incrementScore(RedisConstants.SKU_HOTSCORE, skuId.toString(), 1); if (score % 100 == 0) { // 分数达到了100就保存到es一次,避免每次都连接es存储,浪费性能 searchFeignClient.updateHotScore(skuId, score.longValue()); } }
/** * 更新商品热度分 * * @param skuId * @param score */ @Override public void updateHotScore(Long skuId, Long score) { Optional<Goods> optional = goodsMapper.findById(skuId); Goods goods = optional.get(); goods.setHotScore(score); // 修改 goodsMapper.save(goods); log.info("热度分已更新:{}", score); }
结果
相关文章推荐
- Redis(1)-用redis存储商品-用户关系
- [参考]redis存储商品信息,自增订单或商品id,缓存评论!
- 用Redis存储Tomcat集群的Session
- Redis持久化存储
- Redis 如何存储一条用户信息
- Redis内存使用优化与存储
- 使用Redis存储Nginx+Tomcat负载均衡集群的Session
- Redis实战《红丸出品》1.1 Key-Value存储系统简介
- 代码运行显示redis持久化存储错误
- redis分布式锁-用来解决商品超卖问题
- Redis存储数据类型一:String
- 解析如何利用ElasticSearch和Redis检索和存储十亿信息
- Redis学习笔记4--Redis数据存储优化机制
- 分布式爬虫系统设计、实现与实战:爬取京东、苏宁易购全网手机商品数据+MySQL、HBase存储
- 将java对象存储到redis数据库(使用序列化和反序列化)
- Redis数据存储类型(一)
- 大容量类 Redis 存储的场景补充-pika
- redis 持久化存储之aof和设置密码
- Redis两种存储机制(持久化)的比较
- redis存储购物车记录分析