java利用redis的setIfAbsent和incr,实现自增,限制总数
/**
* 生成任务时,任务编号的规则是“XJRW-”+nowday(格式yyyyMMdd)+“-”+(当天生成任务数量+1)左补零4位
*
* @author hlliut 2021年10月12日
*/
public class TaskNumberUtil {
private static String _KEY = "XJRW-";
public static String generateTaskNumber() {
String key = _KEY + DateUtil.dateToString(new Date(), DateUtil.ISO_DATE_FORMAT);
long value = getNumber(key);
return String.format("%s-%s", key, String.format("%04d", value));
}
private static long getNumber(String key) {
if (!RedisUtils.hasKey(key)) {
RedisUtils.setIfAbsent(key, 0, 25, TimeUnit.HOURS);// 25小时过期
}
long value = RedisUtils.incr(key);// 自增
if (value > 9999) {
RedisUtils.set(key, 0);
return getNumber(key);// 重新计数
}
return value;
}
}
java利用redis的setIfAbsent和incr,实现自增,限制总数相关推荐
- java利用redis实现排行榜_Java简单使用redis-zset实现排行榜
简单使用redis-zset实现排行榜 此方法实现一个根据某字段的查询次数进行排行,查询的次数越多排行越前(从大到小排序),适用于初学者 1.添加依赖 org.springframework.boot ...
- java 利用redis 记录文章的阅读量
最近接到一个需求,需要记录阅读过文章的数量.6 package org.java.redis_count;import org.springframework.beans.factory.annota ...
- java利用redis实现排行榜_Redis实现排行榜
ZSet有序集合 redis的有序集合与集合一样也是String类型元素的集合,不允许有重复的元素. 每一个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的 ...
- Java利用Redis实现短信验证码功能
本文将详情介绍从Redis+阿里云注册短信服务到后端调用等过程. 这个功能比较实用的地方就是注册用户的时候,防止一个用户多个账户注册,因为手机号毕竟有限 短信服务 首先,打开你的阿里云 话不多说,第一 ...
- c#获取对象的唯一标识_在 Java 中利用 redis 实现分布式全局唯一标识服务
作者: 杨高超 juejin.im/post/5a4984265188252b145b643e 获取全局唯一标识的方法介绍 在一个IT系统中,获取一个对象的唯一标识符是一个普遍的需求.在以前的单体应用 ...
- 小王,在 Java 中如何利用 redis 实现一个分布式锁服务呢???
作者:杨高超 juejin.im/post/5a4984af6fb9a0450b66bc57 在现代的编程语言中,接触过多线程编程的程序员多多少少对锁有一定的了解.简单的说,多线程中的锁就是在多线程环 ...
- 利用Redis原子计数器incr实现计数器及接口限流
一.INCR命令介绍 Redis Incr 命令将 key 中储存的数字值增一. 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作.且将key的有效时间设置为长 ...
- 如何利用redis实现秒杀系统
文章目录 题记 利用Watch实现Redis乐观锁 题记 在线思维导图总结:redis大纲 利用Watch实现Redis乐观锁 乐观锁基于CAS(Compare And Swap)思想(比较并替换), ...
- 【Redis笔记】一起学习Redis | 如何利用Redis实现一个分布式锁?
一起学习Redis | 如何利用Redis实现一个分布式锁? 前提知识 什么是分布式锁? 为什么需要分布式锁? 分布式锁的5要素和三种实现方式 实现分布式锁 思考思考 基础方案 改进方案 保证setn ...
最新文章
- TCP断开连接为什么是4次挥手?
- 如何通过日期属性对数组进行排序
- css圆角矩形及去掉空格属性
- 【Linux】一步一步学Linux——fgrep命令(了解)(51)
- js实际工作中的技能点
- java token redis生成算法_Redis实现单点登录
- linux zfs功能,linux – 有没有办法一次设置多个ZFS文件系统属性?
- python图片横向合并_python3 图片横向合并
- 《统计学习方法》读书笔记——K近邻法(原理+代码实现)
- android 相机功能修改,安卓用户又少了一项自由,Android 11不再支持更改默认相机程序...
- Jquery和JS获取ul中li标签
- ThreadLocal对象使用过程中容易陷入的坑
- 安装KETTLE教程,并配置执行定时任务
- 进销存软件网络版连接不上,如何设置IP地址
- 超自动化如何提升保险业?
- php解析psd文件,PSD解析工具实现(二)
- 编写宠物dog类python_Python编程:创建和使用类
- pad 锁定屏幕显示方向为竖屏正方向
- 国内cn域名过期失效日期计算方式
- tpc ds mysql_TPC-DS 数据仓库查询性能测试