此处以SpringBoot为例,示范如何使用Redis构造全局唯一标识.

1. RedisTemplate配置

spring.redis.database = 0
spring.redis.host = **
spring.redis.port = 6379
spring.redis.password = **
spring.redis.lettuce.pool.max-wait = 1000ms

以上配置,参照实际情况进行设置.,

2.Java服务中Redis配置

@Repository
@Slf4j
public class RedisCounterRepository { private final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd"); private RedisTemplate<String, Object> redisTemplate; @Autowired
public RedisCounterRepository(RedisTemplate<String, Object> redisTemplate) {
this.redisTemplate = redisTemplate;
} // 根据获取的自增数据,添加日期标识构造分布式全局唯一标识
private String getNumFromRedis(String changeNumPrefix) {
String dateStr = LocalDate.now().format(dateTimeFormatter);
Long value = incrementNum(changeNumPrefix + dateStr);
return dateStr + StringUtils.leftPad(String.valueOf(value), 4, '0');
} // 从redis中获取自增数据(redis保证自增是原子操作)
private long incrementNum(String key) { RedisConnectionFactory factory = redisTemplate.getConnectionFactory();
if (null == factory) {
log.error("Unable to connect to redis.");
throw new UserException(AppStatus.INTERNAL_SERVER_ERROR);
}
RedisAtomicLong redisAtomicLong = new RedisAtomicLong(key, factory);
long increment = redisAtomicLong.incrementAndGet();
if (1 == increment) {
// 如果数据是初次设置,需要设置超时时间
redisAtomicLong.expire(1, TimeUnit.DAYS);
}
return increment;
}

PS:

如果您觉得我的文章对您有帮助,请关注我的微信公众号,谢谢!

最新文章

  1. monkeyrunner之控件ID不存在或重复
  2. 记录SQL Server2008日志文件损坏的恢复过程
  3. 一个简单的物料防错DEMO
  4. jquery validate表单验证插件
  5. BZOJ 3594 方伯伯的玉米田
  6. linux top命令
  7. C#中的lock关键字有何作用
  8. ICON文件保存
  9. POJ #2479 - Maximum sum
  10. SQLServer2005中查询语句的执行顺序
  11. Tomcat8 配置NIO
  12. Druid数据库连接池源码分析
  13. Adobe RIA 开发工程师认证考试大纲
  14. c# 利用IEqualityComparer接口去除DataTable重复数据
  15. form编码方式application/x-www-form-urlencoded和multipart/form-data的区别
  16. MYSQL学习笔记——sql语句优化工具
  17. vue中的组件
  18. jQuery实现淘宝轮播图
  19. 百度AI搜索引擎
  20. vs2017_enterprise正式版离线安装包bt下载

热门文章

  1. 获取input Date日期 时间,并得到前一天的Date值
  2. struts2(二)---ModelDriven模型驱动
  3. linux系统安装mysql
  4. mysql运维必会的一些知识点整理
  5. dirlock.go
  6. 【bzoj1045】【HAOI2008】 糖果传递
  7. Guess 任意猜
  8. 使用NOOBS给树莓派安装系统Raspbian
  9. java Dated Dateformat Calendar
  10. XSS攻击(出现的原因、预防措施......)