Redis实现滚动周榜|滚动榜单|直播间榜单|排行榜|Redis实现日榜05

方法:写当日榜单+当日滚动榜+次日滚动榜+定时任务处理历史数据

实际上,这个步骤并不复杂,主要是为了解决定时数据在时间间隔切换时无法平滑过渡的问题。具体来说,在编写代码时,我们需要执行以下三个操作。

  1. 获取7天、30天或更多天的数据:首先,我们需要根据需求获取特定时间段内的数据。以今天(2023年12月29日)为例,我们可以获取从2023年12月23日至12月29日的7天数据。

  2. 处理数据的平滑过渡:在获取到特定时间段的数据后,我们需要对数据进行处理,使其能够平滑过渡。这意味着我们要确保每一天的数据都与前一天的数据有一定的关联性,避免出现突变或不连贯的情况。

  3. 生成报表或执行其他操作:最后,我们可以根据处理后的数据生成报表或执行其他需要的操作。这可能包括计算统计指标、绘制图表或进行趋势分析等。根据具体需求,我们可以灵活地进行定制。

需要注意的是,无论是获取7天榜单、30天榜单还是更长时间段的数据,这三个操作都是固定的,只是根据具体的日期和时间间隔进行相应的调整和处理。

# 增加当日排行榜用户数据
ZINCRBY gift_list_cache:20231229 13140 Test0001
# 增加当日滚动排行榜用户数据
ZINCRBY gift_list_cache:scroll:20231229 13140 Test0001
# 增加次日滚动排行榜用户数据
ZINCRBY gift_list_cache:scroll:20231230 13140 Test0001

我们需要在每天定时任务中初始化次日的滚动榜数据,并确保数据的平滑过渡:

1. 当天的数据是同步写入的,不需要在定时任务中处理。
2. 前一天的数据已经在前一天同步写入的时候被处理了,不需要在定时任务中处理。
3. 需要初始化的是次日滚动榜缺少的最开始的5天数据。
4. 在定时任务中,如果是29号的定时任务,实际上是为了初始化30号的数据。
5. 29号的定时任务不需要处理29号当天的数据(29号有数据时会同步写到30号),也不需要处理30号(因为30号是明天,还没有数据)。
6. 定时任务只需要处理28、27、26、25、24这5天的日榜数据。
7. 因为今天是29号,前5天的数据已经确定,所以可以直接计算并递增到30号的滚动榜的key上。

综上所述,您可以在定时任务中按照以下步骤进行初始化操作:

1. 获取明天的日期。
2. 初始化明天的滚动榜key。
3. 计算并处理缺少的前5天历史数据。
4. 将历史数据聚合并递增到明天滚动榜的key上。
通过以上操作,您可以实现在定时任务中初始化次日的数据,并确保数据的平滑过渡。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/584891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode1232. Check If It Is a Straight Line

文章目录 一、题目二、题解 一、题目 You are given an array coordinates, coordinates[i] [x, y], where [x, y] represents the coordinate of a point. Check if these points make a straight line in the XY plane. Example 1: Input: coordinates [[1,2],[2,3],[3,…

YOLO训练results.csv文件可视化(原模型与改进模型对比可视化)

一、单独一个文件可视化(源码对应utils文件夹下的plots.py文件的plot_results类) from pathlib import Path import matplotlib.pyplot as plt import pandas as pd def plot_results(fileruns/train/exp9/results.csv, dir):# Plot training results.c…

前后端分离nodejs+vue医院预约挂号系统6nrhh

医院预约挂号系统主要有管理员、用户和医生三个功能模块。以下将对这三个功能的作用进行详细的剖析。 运行软件:vscode 前端nodejsvueElementUi 语言 node.js 框架:Express/koa 前端:Vue.js 数据库:mysql 开发软件:VScode/webstorm/hbuiderx均…

ubuntu下的磁盘管理

1. 磁盘文件目录 磁盘文件是linux下的/dev/sd*文件 2. 磁盘和目录容量查询 df:列出文件系统的使用量,主要查看文件系统的使用量 du:评估文件系统的磁盘使用量,主要是单个文件大小 3. 磁盘的挂载与卸载 mount:磁盘挂载 mount…

YOLOv8改进 | 细节创新篇 | iAFF迭代注意力特征融合助力多目标细节涨点

一、本文介绍 本文给大家带来的改进机制是iAFF(迭代注意力特征融合),其主要思想是通过改善特征融合过程来提高检测精度。传统的特征融合方法如加法或串联简单,未考虑到特定对象的融合适用性。iAFF通过引入多尺度通道注意力模块(我…

JDK9及之后版本使用 jlink 生成定制化的 JRE

许多java软件的运行需要依赖jre,在 jdk8 之后,不再提供默认的 jre,后续如果项目中还是想用 jre 的形式发布软件,那么可以使用 jlink 工具生成 jre。 一、jlink 命令详解 jlink 二、查看jdk中包含的所有模块 如果在 jdk 安装文件夹…

Hadoop之Yarn 详细教程

1、yarn 的基本介绍和产生背景 YARN 是 Hadoop2 引入的通用的资源管理和任务调度的平台,可以在 YARN 上运行 MapReduce、Tez、Spark 等多种计算框架,只要计算框架实现了 YARN 所定义的 接口,都可以运行在这套通用的 Hadoop 资源管理和任务调…

【经典算法】有趣的算法之---蚁群算法梳理

every blog every motto: You can do more than you think. 0. 前言 蚁群算法记录 1. 简介 蚁群算法(Ant Clony Optimization, ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agent)通过相互协作而表现出智能行为,从而为求解复杂问题提供了一个新的可能性…

PB 按Excel动态创建对应字段

/* > Function: w_cwjk_xhyy.wf_dw_init >-------------------------------------------------------------------- > 描述: 按excel表格列名,创建对应字段,用于部分接口对应字段导出文件 >-------------------------------------------------------------------- …

VSCode远程开发配置

目录 概要远程开发插件安装开始连接SSH无密码登录开发环境配置 概要 现在很多公司都是直接远程到服务器上写代码,使用远程开发,可以在与生产环境相同的环境中开发、测试和部署代码,减少因环境不同而导致的问题。当下VSCode远程开发是支持的比…

STM32学习笔记十二:WS2812制作像素游戏屏-飞行射击游戏(2)探索时间间隔同步,双向链表

上章我们做好了空间的比例尺,不至于物体定位出错。这次我们尝试一下时间间隔的同步。当然,游戏中需要同步时间的地方很多,这里仅仅涉及很小的一个点。 我们已经创造了玩家飞机,是时候让它能发射子弹了。 发射子弹,哪…

ClickHouse基础知识(六):ClickHouse的副本配置

副本的目的主要是保障数据的高可用性,即使一台 ClickHouse 节点宕机,那么也可以 从其他服务器获得相同的数据。 1. 副本写入流程 2. 配置步骤 ➢ 启动 zookeeper 集群 ➢ 在hadoop101的/etc/clickhouse-server/config.d目录下创建一个名为metrika.xml…

天线根据什么进行分类

天线是信息化时代的一个标准,广播信号塔,通信基站塔,卫星天线还有每天都要用到的手机,都是含有天线的,只是各种天线的作用不同,大小不同。今天给大家说一下,天线是如何分类的。 1.按工作性质可…

002文章解读与程序——中国电机工程学报EI\CSCD\北大核心《计及源荷不确定性的综合能源生产单元运行调度与容量配置两阶段随机优化》已提供下载资源

👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆下载资源链接&#x1f4…

Collector收集器的高级用法

Collectors收集器的高级用法 场景1:获取关联的班级名称 原先如果需要通过关联字段拿到其他表的某个字段,只能遍历List匹配获取 for (Student student : studentList) {Long clazzId student.getClazzId();// 遍历班级列表,获取学生对应班级…

HarmonyOS4.0系统性深入开发08服务卡片架构

服务卡片概述 服务卡片(以下简称“卡片”)是一种界面展示形式,可以将应用的重要信息或操作前置到卡片,以达到服务直达、减少体验层级的目的。卡片常用于嵌入到其他应用(当前卡片使用方只支持系统应用,如桌…

鸿鹄电子招投标系统:基于Spring Boot、Mybatis、Redis和Layui的企业电子招采平台源码与立项流程

在数字化时代,企业需要借助先进的数字化技术来提高工程管理效率和质量。招投标管理系统作为企业内部业务项目管理的重要应用平台,涵盖了门户管理、立项管理、采购项目管理、采购公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理等…

服务器被入侵后如何查询连接IP以及防护措施

目前越来越多的服务器被入侵,以及攻击事件频频的发生,像数据被窃取,数据库被篡改,网站被强制跳转到恶意网站上,网站在百度的快照被劫持等等的攻击症状层出不穷,在这些问题中,如何有效、准确地追…

k8s持久化存储(NFS-StorageClass)

一、StatefulSet由以下几个部分组成: 用于定义网络标志(DNS domain)的Headless Service用于创建PersistentVolumes的volumeClaimTemplates定义具体应用的StatefulSet 二、StatefulSet 特点 StatefulSet 适用于有以下某个或多个需求的应用&a…

使用Vscode远程debug报错找不到Module找不到File

1..报第一个错 提示我无法导入自己写的module 如图: 解决办法: stackoverflow上说的在launch.json中加了一条 env,就解决了。 "env": { "PYTHONPATH":"/home/zt/ge-sc-master/ge-sc-master"}, 2.解决完第一个…