`
y806839048
  • 浏览: 1119282 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

订单号的生成redis中获取

阅读更多

 

利用redis的单线程高速缓存特性生成序列号,订单号,之后入库

 

 String orderNo = PREFIX + factoryService.createTradeNo();

 

/**

     * 定义TradeNo的生成

     * @return

     */

    public String createTradeNo(){

        return dataFactory.getUID(BankConstants.BANKAPI_BANK_TRADENO);

    }

    

 

 

 

 

   /**

     * 获取唯一id (固定长度20位)

     *

     * @param key redis key

     * @return

     */

    public String getUID(String key) {

        int sufLength = ranLen;

        return redisIdByDate(key, sufLength);

    }

 

 

 

 

 

 

 

 

 

/**

     * 获取唯一id 时间+自增序列

     *

     * @param key       redis key

     * @param sufLength 自增的位数

     * @return

     */

    public String redisIdByDate(String key, int sufLength) {

        //获取时间戳

        String dateTime = "";

        String incr = "";

        List<String> time = null;

        try {

            time = jedisTemple.time();

            if (time != null && time.get(0) != null) {

                dateTime = TimeUtils.TimeStamp2Date(time.get(0), BankConstants.time1);

            } else {

                dateTime = BankConstants.sdf_time1.format(new Date());

                log.error(LogUtils.print("未获取到REDIS时间,请及时解决..."));

            }

        } catch (Exception e) {

            dateTime = BankConstants.sdf_time1.format(new Date());

            log.error(LogUtils.print("未获取到REDIS时间,请及时解决..."), e);

        }

        //获取redis自增

        try {

            incr = incrId(key, sufLength);

        } catch (Exception e) {

            incr = String.valueOf(random(sufLength));

            log.error(LogUtils.print("key=" + key, "", "获取REDIS自增ID时异常,请及时解决..."), e);

        }

        log.info(String.format("KEY[%s],时间[%s]+自增ID[%s]=UID[%s]", key, dateTime, incr, dateTime + incr));

        return dateTime + incr;

    }

 

 

 

分享到:
评论

相关推荐

    JAVA生成订单号(日期+流水号)

    通过上述步骤,我们可以在Java中实现一个基于日期和流水号的订单号生成器。对于提供的`java订单号(时间加流水号).txt`文件,可能包含了具体的代码实现或使用示例,你可以查阅该文件以获取更详细的实现细节。在实际...

    redis令牌机制实现秒杀系统

    秒杀是电商系统非常常见的功能模块,是商家进行相关促销推广的常用方式。主要 特点是商品库存有限,抢购...令牌的用户才能进行支付,支付成功之后可以生成订单,如果一定时间之内没有支 付那么就由定时任务来归还令牌

    java web在高并发和分布式下实现订单号生成唯一的解决方案

    在实现订单号生成唯一的解决方案中,我们需要获取线程ID、进程ID 和 MAC 地址等信息。下面是获取这些信息的代码: * 获取线程ID:`Thread.currentThread().getId()` * 获取进程ID:`ManagementFactory....

    并发生成重复订单号1

    1. **订单号生成策略**: - 订单号通常由日期和序列号组成,如`"yyyy-MM-dd-HH-mm-ss-"`后跟一个自增序列,目的是保证订单号的时间顺序性和全局唯一性。 - 示例代码中的`OrderCodeGenerator`类中,`getOrderCode()...

    Redis源码解读与项目精品设计实战

    可以利用Redis的原子性操作`INCR`命令,按照顺序递增来生成订单号。而在集群环境中,为了实现Session共享,可以通过Spring Session和Redis的结合来实现。这种配置允许应用服务器的多个实例共享同一存储的会话数据。 ...

    C#实现在购物车系统中生成不重复订单号的方法

    3. **分布式锁**:在多服务器环境下,可以使用分布式锁(如Redis或Zookeeper)来确保在同一时刻只有一个服务器能够生成订单号,避免并发冲突。 4. **UUID/Guid**:生成全局唯一标识符(UUID或Guid),虽然它们看...

    redis字符串类型_动力节点Java学院整理

    例如,`INCR key`会将`key`对应的值增加1,非常适合用于生成唯一订单号或者作为计数器。这种方式避免了在多线程环境下使用锁来保证操作的原子性,提高了系统性能。 通过以上的讨论,我们可以了解到Redis在处理字符...

    spring boot(三)之Spring Boot中Redis的使用

    当我们调用 getUser 方法时,Spring Boot 将从缓存中获取用户信息,如果缓存中没有对应的数据,则从数据库中查询并缓存结果。 五、Redis 的优点和应用场景 Redis 具有以下优点: * 高性能:Redis 的性能非常高,...

    redis-id-generator

    在大型互联网应用中,这种需求非常常见,例如订单号、用户ID等都需要保证全局唯一且递增。传统的数据库自增ID在分布式环境下无法满足需求,因此利用 Redis 的高可用性和分布式特性,可以有效地构建这样的ID生成系统...

    java面试项目经历说辞(Spring全家桶,mybatis,mybatis-plus,redis,rabbitM.pdf

    一旦订单超过一天未支付,RabbitMQ会将订单号转发至死信队列,由专门的系统监控并处理这些订单,确保业务流程的完整性。 Mybatis作为持久层框架,负责数据库操作。Mybatis-Plus则在此基础上提供了更多的便捷功能,...

    build.py.zip

    在IT行业中,数据库唯一ID发号器是一种常见的需求,它用于生成全局唯一的标识符,确保数据的唯一性。本项目名为"build.py.zip",它是一个基于Python3编写的脚本,利用Redis作为数据存储来实现这样的功能。下面将详细...

    基于Spring Boot框架的秒杀系统.zip

    基于Spring Boot框架的秒杀系统 项目简介 本项目是一个基于Spring Boot框架开发的秒杀系统,旨在处理高并发的商品秒杀场景。系统通过分布式锁、消息队列... 使用SnowFlake算法生成全局唯一的订单号。 安装使用步骤

    工作日志_李响115_202109071

    服务层负责业务逻辑的处理,如生成订单号、补充字段等。 - `OrderController115`是Spring MVC的控制器,接收HTTP POST请求,调用`OrderService115`的`createOrder`方法来创建订单,并返回结果。 5. **异常处理**:...

    FR313-阿狸子订单系统_Alipay_Alipay_阿狸子订单管理系统_订单系统_阿狸子_源码.rar

    接着,系统会生成唯一的订单号,便于后续的跟踪和查询。 支付处理是阿狸子订单系统的关键环节。与支付宝的集成使得系统能够支持各种支付方式,如快捷支付、余额支付、花呗等。在用户完成支付后,系统会通过支付宝的...

    超市订单管理

    每个实体都有相应的属性和方法,例如订单包含订单号、下单时间、客户信息、商品列表和总价等。商品实体则包括商品ID、名称、价格和库存量等。 接着,我们需要定义服务接口(Service)和实现类(ServiceImpl),以...

    基于C#的购物车(关于数据库的系统)

    4. **订单表(Order Table)**:存储订单详情,包括订单号、用户ID、下单时间、总价、支付状态等。 **C#与数据库的交互** 1. **ADO.NET**:C#中常用的数据访问技术,可以用来连接SQL Server、MySQL等数据库。通过...

    仿京东简单购物流程实现php+mysql

    PHP处理订单创建逻辑,同时生成订单号,确保其唯一性。 六、支付接口 支付接口是商城系统与第三方支付平台(如支付宝、微信支付)交互的部分。PHP需要集成支付SDK,实现支付请求的发送和支付结果的接收。支付成功后...

    springboot整合mybatis整合jpa使用entityManger

    在处理支付请求时,你需要调用支付API,生成预支付订单,然后将预支付信息返回给前端。前端生成支付二维码或发起支付请求后,支付平台会通过回调URL通知你的服务处理支付结果。确保正确处理各种状态,如支付成功、...

    基于SpringBoot+Reds+RabbitMQ实现的分布式秒杀系统+源代码+文档说明

    在商品表中添加一个版本号字段,减库存业务时,通过商品id获取商品的版本号,在减库存操作时,先判断查询的verison 是否一致,一致则减库存成功。写入秒杀订单。 ``` update set seckill_goods stock = stock - 1, ...

Global site tag (gtag.js) - Google Analytics