Redis存储商品热度
项目中有一个需求,就是可以根据商品的热度进行排序
起初想着使用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存储商品热度的更多相关文章
- 简单的面向过程的Redis存储加入购物车
群里有人问这个Redis存储用户购物车信息,我简单的写了个面向过程的demo 代码如下: <?php $user_id=session("user_id");//获取用户登录 ...
- Redis 存储对象信息是用 Hash 还是 String
Redis 内部使用一个 RedisObject 对象来表示所有的 key 和 value,RedisObject 中的 type,则是代表一个 value 对象具体是何种数据类型,它包含字符串(St ...
- nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)
本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...
- Redis存储Tomcat集群的Session
Redis存储Tomcat集群的Session 如何 做到把新开发的代码推送到到生产系统中部署,生产系统要能够零宕机.对使用用户零影响. 设想 是使用集群来搞定,通过通知负载均衡Nginx,取下集群中 ...
- redis 存储session实现session共享
nginx 作为代理 tomcat集群 redis存储共享session nginx采用轮询方式将动态请求反向代理给tomcat,tomcat通过加载相应jar包方式实现获得redis中共享的sess ...
- Tomcat 使用Redis存储Session
Tomcat Redis Session Github 地址. 下载 commons-pool2-2.2.jar,jedis-2.5.2.jar,tomcat-redis-session-manage ...
- Asp.net Core 使用Redis存储Session
前言 Asp.net Core 改变了之前的封闭,现在开源且开放,下面我们来用Redis存储Session来做一个简单的测试,或者叫做中间件(middleware). 对于Session来说褒贬不一, ...
- php使用redis存储
一.Redis扩展模块 # wget https://codeload.github.com/phpredis/phpredis/zip/develop -O phpredis.zip # unzip ...
- Redis 存储、查询
[TOC] 数据存储 假设我们在MySQL数据库中有这样一张表: mysql> desc user_info; Field Type Null Key Default Extra id int( ...
- Redis存储Session
net Core 使用Redis存储Session 前言 Asp.net Core 改变了之前的封闭,现在开源且开放,下面我们来用Redis存储Session来做一个简单的测试,或者叫做中间件(m ...
随机推荐
- vue3探索——组件通信之依赖注入
背景 通常情况下,当我们需要从父组件向子组件传递数据时,会使用 props.想象一下这样的结构:有一些多层级嵌套的组件,形成了一颗巨大的组件树,而某个深层的子组件需要一个较远的祖先组件中的部分数据.在 ...
- 程序员 不得不知道的 API 接口常识
说实话,我非常希望自己能早点看到本篇文章,大学那个时候懵懵懂懂,跟着网上的免费教程做了一个购物商城就屁颠屁颠往简历上写. 至今我仍清晰地记得,那个电商教程是怎么定义接口的: 管它是增加.修改.删除.带 ...
- redhat7查找已接网线但是还未配置IP的网卡接口
方法一:nmcli 输出中参数WIRED-PROPERTIES.CARRIER为on即为接网线网卡 #nmcli device show |grep -i -E "device|carrie ...
- Laf 云开发平台及其实现原理
Laf 产品介绍 自我介绍 大家好,我是来自 Laf 团队的王子俊,很高兴今天能在这里给大家分享我们 Laf 云开发平台及其实现原理.本来想说一点什么天气之类的话作为开头,但主持人都说完啦,我就不多说 ...
- DDMS查看Threads情况
有时候程序运行出现死锁或者信号量卡死是很纠结的问题,单看代码很难分析定位问题,这时候可以借助DDMS来查看threads的运行情况,一目了然. 手机连接上USB,确保adb连通,然后启动Eclipse ...
- 轻松掌握组件启动之MongoDB:快速入门、Linux安装和Docker配置指南
引言 我们将继续深入研究组件启动专题.在之前的文章中,我们已经详细介绍了Redis的各种配置使用方法,为读者提供了全面的指导.然而,今天我们将转向另一个备受关注的数据库--MongoDB.MongoD ...
- 浅析 C# 控制台的 Ctrl+C 是怎么玩的
一:背景 1. 讲故事 上一篇我们聊到了 Console 为什么会卡死,读过那篇文章的朋友相信对 conhost.exe 有了一个大概的了解,这一篇更进一步聊一聊窗口的特殊事件 Ctrl+C 底层流转 ...
- 二进制部署k8s高可用
一.前置知识点 部署中遇到问题请参考:http://blog.ctnrs.com/post/k8s-binary-install/ 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部 ...
- GameFramework摘录 - 1. ReferencePool
GameFramework是一个结构很优秀的Unity游戏框架,但意图似乎在构建可跨引擎的框架?对要求不高的小型个人(不专业)开发来说有些设计过度了,但其中的设计精华很值得学习. 首先来说一下其中的R ...
- MySQL高级SQL语句
MySQL高级SQL语句 围绕两张表 Location表 Store_Info表 #select选择 SELECT Store_Name FROM Store_Info; #distinct去重 ...