当前位置:   article > 正文

基于Redis实现的一个编码生成器

基于Redis实现的一个编码生成器

使用Redis的自增长功能来生成一个比上一个编码+1的新编码,同时使用synchroiniezd来解决并发问题,并考虑Redis宕机和Key过期时缓存重构的问题

同时这段代码具有通用性,可以为这一系列问题提供解决思路

  1. //处理并发
  2. private synchronized String codeGenerate(String codeRedisKey,String codePrefix) {
  3. Long num = 0L;
  4. Object value = redisTemplate.opsForValue().get(codeRedisKey);
  5. if (value == null) {
  6. //如果key因为过期 宕机等问题时需要取最大值来重构缓存
  7. String maxCode = getBaseMapper().selectMaxCode();
  8. if (StringUtils.isNotBlank(maxCode)) {
  9. num = Long.parseLong(maxCode.substring(codePrefix.length()));
  10. }
  11. redisTemplate.opsForValue().set(codeRedisKey, num, 1, TimeUnit.DAYS);
  12. }
  13. // redis自增长
  14. num = redisTemplate.opsForValue().increment(codeRedisKey);
  15. String index = String.format("%06d", num);
  16. return codePrefix + index;
  17. }

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号