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 ...
随机推荐
- .NET周刊【8月第4期 2023-08-27】
国内文章 AgileConfig-1.7.0 发布,支持 SSO https://www.cnblogs.com/kklldog/p/agileconfig-170.html AgileConfig ...
- windows下flutter的环境安装
Flutter是谷歌出品的移动应用SDK,性能卓越.体验精美.跨平台.HotReload等等这些特点. Dart是谷歌推出的编程语言.支持即时编译JIT(Just In Time).HotReload ...
- vue + canvas 实现九宮格手势解锁器
前言 专栏分享:vue2源码专栏,vue router源码专栏,玩具项目专栏,硬核推荐 欢迎各位 ITer 关注点赞收藏 此篇文章用于记录柏成从零开发一个canvas九宮格手势解锁器的历程,最终效果如 ...
- SpringBoot打成jar运行后无法读取resources里的文件
开发一个word替换功能时,因替换其中的内容功能需要 word 模版,就把 word_replace_tpl.docx 模版文件放到 resources 下 在开发环境中通过下面方法能读取word_r ...
- CopyOnWriteArrayList 写时复制思想
写时复制 conpyOnWrite容器即写时复制容器.往一个容器添加元素的时候,不直接往当前容器Object[]添加,而是先将当前容器Object[]进行Copy,复制出一个新的容器Object[] ...
- 看完这篇HTTP,跟面试官扯皮就没问题了(转)
认识 HTTP 首先你听的最多的应该就是 HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol),这你一定能说出来,但是这样还不够,假如你是大厂面试官,这不可能是他 ...
- c语言代码练习3改进
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int x = 0; printf("请输入一 ...
- GPT-4 API waitlist
Skip to main content Site Navigation GPT-4 API waitlist We're making GPT-4 available as an API for d ...
- docker入门加实战—部署Java和前端项目
docker入门加实战-部署Java和前端项目 部署之前,先删除nginx,和自己创建的dd两个容器: docker rm -f nginx dd 部署Java项目 作为演示,我们的Java项目比较简 ...
- Unity - EditorWindow 折叠树显示(IMGUI)
仅适用于2018之前的版本,有UIElements或者UIWidgets的最好用新的 基本实现 树节点 public interface ITreeNode { ITreeNode Parent { ...