zoukankan      html  css  js  c++  java
  • 订单号生成办法

    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服务器链接失败会报异常
                try
                {
                    //单例获取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("yyMMdd"); //因为我们的Redis Incr是按照天数来的 所以原则上用天的区分就好了
                    var orderIncr = db.StringIncrement(incrkey).ToString("0000000");
                    return orderDateTime + orderIncr;
                }
                catch (Exception)
                {
                    //TODO 这里可以写个日志
                    return "";
                } 
            }

      

  • 相关阅读:
    HDU 5546 深搜吧 主要是提取的时候容易重复
    HDU 5543 新型01背包 两端放一半就可以有其价值
    HDU 2586 查找两点之间的距离
    HDU 5652 二分加搜索 http://acm.split.hdu.edu.cn/showproblem.php?pid=5652
    美句
    最短路径问题
    1766 装果子
    Watchcow
    codevs 4768 跳石头
    noi 7219:复杂的整数划分问题
  • 原文地址:https://www.cnblogs.com/ideacore/p/6877678.html
Copyright © 2011-2022 走看看