获取全局唯一id(序列号)方法

一、使用UUID

String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
         System.out.println(uuid);

优点:代码实现简单、不占用宽带、数据迁移不受影响

 缺点:无序、无法保证趋势递增(要求3)字符存储、传输、查询慢、不可读

二、使用redis

    @Autowired
    private RedisTemplate redisTemplate;

    @RequestMapping("/getOrderid")
    public String getOrderid(String key) {
        //String key = "DEMO_ORDER_ID_" + prefix;
        RedisAtomicLong   redisAtomicLong = new RedisAtomicLong(key,redisTemplate.getConnectionFactory());
        long incrementAndGet = redisAtomicLong.incrementAndGet();
        String ordIid =prefix()+ String.format("%1$05d", incrementAndGet);
       return ordIid;
    }
    
    public static String prefix() {        
        Date date = new Date();
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式
        return df.format(date);
    }

三、使用数据库自增id

四、雪花算法Snowflake

猜你喜欢

转载自blog.csdn.net/wjc2013481273/article/details/89882505