订单号生成办法

1、Redis Incr

public class RedisConnection
    {
        private static readonly ConfigurationOptions ConfigurationOptions = ConfigurationOptions.Parse("127.0.0.1" + ":" + "6379");
        private static ConnectionMultiplexer _redisConn;
        private static readonly object Locker = new object();
        private RedisConnection() { }  

        /// <summary>
        /// 单例获取Redis链接
        /// </summary>
        public static ConnectionMultiplexer GetRedisConn
        {
            get
            {
                if (_redisConn == null)
                {
                    lock (Locker)
                    {
                        if (_redisConn == null || !_redisConn.IsConnected)
                        {
                            _redisConn = ConnectionMultiplexer.Connect(ConfigurationOptions);
                        }
                    }
                }
                return _redisConn;
            }
        }
    }
        /// <summary>
        /// 生成规则:时间+redis自增
        /// 缺点:能够根据redis自增知道订单量
        /// </summary>
        public static string CreateByRedis()
        {
            //单例获取Redis链接
            var redis = RedisConnection.GetRedisConn;
            var db = redis.GetDatabase();
            //根据当前日期获取Redis订单号自增的key
            var incrkey = "Incr_" + DateTime.Now.ToString("yyyyMMdd");
            if (!db.KeyExists(incrkey))
            {
                db.StringSet(incrkey, 1,new TimeSpan(24,0,0));
            }

            var orderDateTime = DateTime.Now.ToString("yyMMddHHmmssfff");
            var orderIncr = db.StringIncrement(incrkey).ToString("0000000");
            return orderDateTime + orderIncr;
        }

  

  

时间: 2024-10-24 00:29:46

订单号生成办法的相关文章

项目笔记之订单号生成规则以及方法,第一篇!

小伙伴们在日常的商城项目开发中,都会遇到订单号生成的问题,今天呢小编就带领大家去解读一下生成订单号的问题! 首先,订单号我们要明确它有有3个性质:1.唯一性 2.不可推测性3.效率性,唯一性和不可推测性不用说了,效率性是指不能频繁的去数据库查询以避免重复.况且满足这些条件的同时订单号还要足够的短.不知道小伙伴们在日常的项目中是否也和我一样去思考过生成订单的一些小问题,可能你也会说,这些东西不用想的那么复杂,其实呢,小编也是同意大家的看法,但是殊不知我们做程序的都讲究严谨性,而且在订单模块的开发中

不重复订单号生成规则

偶尔在网上看到的,相对比较好的c#端订单号生成规则 public class BillNumberBuilder{ private static object locker = new object(); private static int sn = 0; public static string NextBillNumber(){ lock(locker){ if(sn == 9999999999) sn = 0; else sn++; return DateTime.Now.ToStrin

c#唯一订单号生成代码

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string uniqueNum = GenerateOrderNumber(); Console.WriteLin

订单号生成规则

前阵子,公司有个电子商务项目,需要生成订单号.当时的考虑很简单,取系统时间加上随机数,或者使用 uniqid() 方法.我们都知道,订单号最基本的要求就是唯一,这个条件必须满足.仔细考虑下上述方法,在顾客购买量少的情况下,订单重复的可能性为零,但是在购买高蜂期生成的订单号重复是很有可能发生的.所以上述方法不可靠,有待强化.在网上找了一番,发现这位同学的想法挺不错的,redtamo,具体的请稳步过去看看,我作简要概述,该方法用上了英文字母.年月日.Unix 时间戳和微秒数.随机数,重复的可能性大大

订单号生成规则,谁用谁知道

1 class Program 2 { 3 //订单号数据源,实际项目中,这里是从数据库中读取过来的 4 string[] strList = { "201512000001", "201512000002", "201512000003", "201512000004", 5 "201512000008", "201512000007", "201512000006"

如何生成不重复的订单号?这里提供一个不重复订单号生成方法

最近老是被运营抱怨订单号太长不方便输入,可是如果随机生成太短的订单号又容易重复,造成客户提交订单失败. 夜不能眠下写了这个工具,完美解决了问题,在这里分享下,由于时间紧张考虑可能不太周到,如发现问题欢迎指教. import java.util.Collections; import java.util.HashSet; import java.util.Set; /** * 订单号生成器 */ public class OrderNoGenerator { private int size; p

偶尔在网上看到的,相对比较好的c#端订单号生成规则

public class BillNumberBuilder{     private static object locker = new object();            private static int sn = 0;            public static string NextBillNumber(){         lock(locker){             if(sn == 999999999)                 sn = 0;    

订单号生成

var date=['J','F','C','D','E','B','H','I','A'];//console.log((new Date().getTime()).toString());var orderSN = date[(new Date().getFullYear()) - 2015];//console.log(orderSN);var a001 =(new Date().getMonth()+1).toString(16).toUpperCase();//console.log(

打印页面 订单号生成 条形码

1.所用插件JsBarcode 2.下载地址:https://github.com/lindell/JsBarcode 3.用法: <script> JsBarcode("#JsBarcode", "123", { format: "CODE39",//选择要使用的条形码类型 width:3,//设置条之间的宽度 height:100,//高度 displayValue:true,//是否在条形码下方显示文字 text:"4