当前位置: 首页 > news >正文

Redis学习路线(5)—— Redis生成唯一ID

一、全局唯一ID

(一)在用户抢购时,就会生成订单并保存到数据库中,而订单表如果使用自增ID就会存在以下几种情况:

  • 自增ID规律性太强
  • 受单表数据量的限制

(二)全局ID生成器,是一种在分布式系统下用来生成全局唯一ID的工具,一般要满足下列特性:

  • 唯一性
  • 高可用
  • 高性能
  • 递增性
  • 安全性

(三)全局唯一ID生成策略

  • UUID
  • Redis自增
  • snowflake算法
  • 数据库自增

(四)Redis自增ID策略

  • 每天一个key,方便统计订单量
  • ID构造是 时间戳 + 计数器

(五)使用Redis进行全局唯一ID生成,采用HyperLog类型进行组合 64 位的全局ID

  • 第一位为符号位,表示永远为正数
  • 添加 31 bit 的时间戳
  • 添加 32 bit 的序列号

(六)使用Reids创建全局ID生成器

@Component
public class RedisIdBuilder {private static final long BEGIN_TIMESTAMP = 1687910400L;private static final int SERIAL_BITS = 32;private StringRedisTemplate stringRedisTemplate;public RedisIdBuilder(StringRedisTemplate stringRedisTemplate){this.stringRedisTemplate = stringRedisTemplate;}public long nextId(String keyPrefix){//1、生成时间戳LocalDateTime now = LocalDateTime.now();long nowSecond = now.toEpochSecond(ZoneOffset.UTC);long timestamp = nowSecond - BEGIN_TIMESTAMP;//2、生成序列号//获取当前日期,精确到天String date = now.format(DateTimeFormatter.ofPattern("yyyy:MM:dd"));//自增长序列号Long serial = stringRedisTemplate.opsForValue().increment("icr:" + keyPrefix + ":" + date);//3、拼接并返回return timestamp << SERIAL_BITS | serial;}
}

相关文章:

Redis学习路线(5)—— Redis生成唯一ID

一、全局唯一ID &#xff08;一&#xff09;在用户抢购时&#xff0c;就会生成订单并保存到数据库中&#xff0c;而订单表如果使用自增ID就会存在以下几种情况&#xff1a; 自增ID规律性太强受单表数据量的限制 &#xff08;二&#xff09;全局ID生成器&#xff0c;是一种在…...

django后台系统Tyadmin

无意之间发现个django的后台管理框架&#xff0c;仔细与xadmin对比了一下&#xff0c;无论是功能上还是便携性上都与xadmin特别相似&#xff0c;但个人感觉Tyadmin略胜一筹&#xff0c;因为外观上要比xadmin要美观&#xff0c;而且相比起来速度也快&#xff0c;部署甚至也和简单…...

设计模式适合用于解决特定的软件设计问题呢

当我们在开发软件时&#xff0c;经常会遇到各种各样的问题和挑战&#xff0c;例如如何处理对象之间的关系、如何实现复杂的业务逻辑、如何处理并发访问等。这些问题都是软件设计中经常遇到的问题&#xff0c;而设计模式就是为了解决这些问题而诞生的。 以下是一些常见的软件设…...

测试|测试分类

测试|测试分类 文章目录 测试|测试分类1.按照测试对象分类&#xff08;部分掌握&#xff09;2.是否查看代码&#xff1a;黑盒、白盒灰盒测试3.按开发阶段分&#xff1a;单元、集成、系统及验收测试4.按实施组织分&#xff1a;α、β、第三方测试5.按是否运行代码&#xff1a;静…...

矩阵中的路径(JS)

矩阵中的路径 题目 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻”单元格是…...

Linux时间体系与LinuxPTP

Linux时间体系 Linux 需要提供“知道当前时间、计算时间长度、定时提醒”这三种功能。 其中知道当前时间和计算时间长度在某种程度上可以互相转换。即以UNIX Epoch计时开始可以知道当前时间。 一般硬件可以提供下列的硬件时钟&#xff1a; RTC 【真实时钟】 对于PC而言&…...

最优除法(力扣)数学 JAVA

给定一正整数数组 nums&#xff0c;nums 中的相邻整数将进行浮点除法。例如&#xff0c; [2,3,4] -> 2 / 3 / 4 。 例如&#xff0c;nums [2,3,4]&#xff0c;我们将求表达式的值 “2/3/4”。 但是&#xff0c;你可以在任意位置添加任意数目的括号&#xff0c;来改变算数的…...

Git代码管理

目录&#xff1a; git环境配置 git工作流程git常用命令gitlab实战gitlog分析与检索分支管理策略git合并与冲突 1.git环境配置 Git 简介&#xff1a; Git 是目前世界上最先进的分布式版本控制系统。Git 优点&#xff1a; 适合分布式开发&#xff0c;强调个体…...

使用vscode进行远程开发服务器配置

1.下载vscode 2.给vscode 安装python 和 remote ssh插件 remote—SSH扩展允许您使用任何具有SSH服务器的远程机器作为您的开发环境。 3.安装remote-SSH插件之后&#xff0c;vscode左侧出现电脑图标&#xff0c;即为远程服务&#xff0c;按图依次点击&#xff0c;进行服务器配置…...

北斗gps卫星授时服务器(NTP)应用于防火墙场景

北斗gps卫星授时服务器&#xff08;NTP&#xff09;应用于防火墙场景 北斗gps卫星授时服务器&#xff08;NTP&#xff09;应用于防火墙场景 作为网络建设中不可或缺的两方面&#xff0c;在保证网络安全稳定以及时间同步精确性方面&#xff0c;防火墙和NTP服务器都极为重要。而防…...

Quartz中Misfire机制源码级解析

文章目录 前文案例展示Misfire机制1. 启动过程补偿2. 定时任务补偿3. 查询待触发列表时间区间补偿 前文 Misfire是啥意义的&#xff1f;使用翻译软件结果是"失火"。一个定时软件&#xff0c;还来失火&#xff1f;其实在Java里面&#xff0c;fire的含义更应该是触发&…...

每日一题——重建二叉树

重建二叉树 题目描述 给定节点数为 n 的二叉树的前序遍历和中序遍历结果&#xff0c;请重建出该二叉树并返回它的头结点。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}&#xff0c;则重建出如下图所示。 提示: 1.vin.length pre.length 2.pre 和…...

Python - json与字典dict

Python中的JSON和字典都是数据序列化的格式&#xff0c;它们都可以将数据转换为字符串以便于存储或传输。虽然它们有一些相似之处&#xff0c;但也有很多不同之处。 字典 字典是Python中的一种数据类型&#xff0c;它是一个键值对的集合。每个键对应一个值&#xff0c;可以通…...

性能测试必备监控技能linux篇

前言 如果性能测试的目标服务器是linux系统&#xff0c;在如何使用linux自带的命令来实现性能测试过程的监控分析呢&#xff1f; 对于日常性能测试来讲&#xff0c;在linux下或是类Unix系统&#xff0c;我们必须掌握以下常用的指标查看命令。 ps pstree top free vmstat …...

【如何训练一个中英翻译模型】LSTM机器翻译模型部署之ncnn(python)(五)

系列文章 【如何训练一个中英翻译模型】LSTM机器翻译seq2seq字符编码&#xff08;一&#xff09; 【如何训练一个中英翻译模型】LSTM机器翻译模型训练与保存&#xff08;二&#xff09; 【如何训练一个中英翻译模型】LSTM机器翻译模型部署&#xff08;三&#xff09; 【如何训练…...

C++ 面向对象三大特征

文章目录 一、封装二、继承三、多态 一、封装 目的&#xff1a;隐藏实现细节&#xff1b;模块化 特性&#xff1a; 1&#xff09; 访问权限&#xff1a; public 所有 protected 子类 private 自己&#xff08;友元类也可以访问&#xff09; 2&#xff09;属性 3&#xff09;方…...

【Github】自动监测 SSL 证书过期的轻量级监控方案 - Domain Admin

在现代的企业网络中&#xff0c;网站安全和可靠性是至关重要的。一个不注意的SSL证书过期可能导致网站出现问题&#xff0c;给公司业务带来严重的影响。针对这个问题&#xff0c;手动检测每个域名和机器的证书状态需要花费大量的时间和精力。为了解决这个问题&#xff0c;我想向…...

Echarts常见图表展示

一、折线图 1.1 堆叠折线图 const option {title: {text: 折线图,},tooltip: {trigger: axis},legend: {data: [张三, 李四, 王五],bottom: 10,},grid: {left: 3%,right: 4%,bottom: 10%,containLabel: true},xAxis: {type: category,boundaryGap: false,data: [Mon, Tue, We…...

PySpark机器学习实战案例

目录 PySpark机器学习库 分布式机器学习原理 PySpark架构设计 PySpark项目实战...

微软操作系统中,windows server 系列和windows 的区别

Windows Server和Windows Desktop&#xff08;即我们常说的Windows系统&#xff09;是Microsoft公司的两种操作系统产品&#xff0c;它们都基于Windows NT内核。两者在设计目标、功能和价格等方面存在显著的区别。 设计目标与功能 Windows Desktop系统主要针对个人用户和企业的…...

告别手动整理!Qwen3-ASR-1.7B帮你自动转写会议录音,5分钟部署即用

告别手动整理&#xff01;Qwen3-ASR-1.7B帮你自动转写会议录音&#xff0c;5分钟部署即用 1. 语音识别的新选择 还在为会议录音转写而烦恼吗&#xff1f;传统的手动转写不仅耗时耗力&#xff0c;而且准确率难以保证。Qwen3-ASR-1.7B语音识别模型的出现&#xff0c;彻底改变了…...

【EI(JA)期刊征稿】第五届能源、电力与电气国际学术会议(ICEPET 2026)

【期刊征稿页面】 第五届能源、电力与电气国际学术会议&#xff08;ICEPET 2026&#xff09; 2026 5th International Conference on Energy, Power and Electrical Technology 重要信息 会议官网&#xff1a;https://ais.cn/u/E7RRVv【点击参会/投稿/了解会议详情】 会议时…...

PyFluent:基于gRPC架构的Ansys Fluent Python自动化接口设计与实现

PyFluent&#xff1a;基于gRPC架构的Ansys Fluent Python自动化接口设计与实现 【免费下载链接】pyfluent Pythonic interface to Ansys Fluent 项目地址: https://gitcode.com/gh_mirrors/pyf/pyfluent PyFluent作为Ansys Fluent的官方Python接口&#xff0c;通过gRPC远…...

如何免费解锁百度网盘SVIP下载:Mac版终极加速指南

如何免费解锁百度网盘SVIP下载&#xff1a;Mac版终极加速指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘缓慢的下载速度而烦恼吗&a…...

PyTorch 2.9镜像使用指南:Jupyter与SSH两种方式详细解析

PyTorch 2.9镜像使用指南&#xff1a;Jupyter与SSH两种方式详细解析 1. 镜像概述 PyTorch 2.9镜像是一个开箱即用的深度学习开发环境&#xff0c;预装了PyTorch 2.9框架和CUDA工具包。这个镜像特别适合需要快速搭建GPU加速开发环境的用户&#xff0c;无论是进行模型训练、推理…...

PaddleOCR模型选型避坑指南:从‘轻量级模型缺失文件’到‘通用模型实战’

PaddleOCR模型选型避坑指南&#xff1a;从轻量级到通用模型的实战解析 第一次接触PaddleOCR时&#xff0c;面对琳琅满目的模型选择&#xff0c;很多开发者都会陷入困惑&#xff1a;轻量级模型和通用模型到底有什么区别&#xff1f;为什么下载的轻量级模型总是提示缺少文件&…...

Leather Dress Collection 在软件测试中的应用:自动化生成测试用例与报告

Leather Dress Collection 在软件测试中的应用&#xff1a;自动化生成测试用例与报告 最近和几个做测试的朋友聊天&#xff0c;大家普遍吐槽一件事&#xff1a;写测试用例和整理测试报告&#xff0c;太费时间了。尤其是面对一个复杂的新功能&#xff0c;或者是一大堆历史遗留的…...

AI与数据库智能交互:Qwen3-0.6B-FP8实现自然语言转SQL查询

AI与数据库智能交互&#xff1a;Qwen3-0.6B-FP8实现自然语言转SQL查询 你有没有过这样的经历&#xff1f;面对公司后台密密麻麻的数据表&#xff0c;想查点东西&#xff0c;却不知道该怎么写SQL语句。或者&#xff0c;你是个业务人员&#xff0c;每次想分析数据都得找技术同事…...

OpenClaw+Qwen2.5-VL-7B:3类图文数据分析自动化案例

OpenClawQwen2.5-VL-7B&#xff1a;3类图文数据分析自动化案例 1. 为什么需要本地化的图文数据分析助手&#xff1f; 上周我整理季度运营报告时&#xff0c;面对几十张散落的截图和PDF&#xff0c;突然意识到一个问题&#xff1a;我们花在"找数据-复制粘贴-核对格式&quo…...

实测科哥版HeyGem稳定性:文件校验、中断恢复、显存保护全解析

实测科哥版HeyGem稳定性&#xff1a;文件校验、中断恢复、显存保护全解析 1. 引言&#xff1a;为什么稳定性对数字人视频生成如此重要 在数字人视频生成领域&#xff0c;我们常常关注生成效果和速度&#xff0c;却容易忽视一个更基础的问题——稳定性。想象一下&#xff0c;当…...