/// <summary>
        ///     初始化数据库环境、实例化子类中,所有Set属性
        /// </summary>
        public void Initializer()
        {
            if (IsInitializer)
            {
                return;
            }
            _client       = new RedisClient(_redisConnection);
            IsInitializer = true;

            Connection  = new RedisConnection(_client);
            Hash        = new RedisHash(_client);
            Key         = new RedisKey(_client);
            List        = new RedisList(_client);
            PubSub      = new RedisPubSub(_client);
            Script      = new RedisScript(_client);
            Server      = new RedisServer(_client);
            Set         = new RedisSet(_client);
            SortedSet   = new RedisSortedSet(_client);
            String      = new RedisString(_client);
            Transaction = new RedisTransaction(_client);
            Bit         = new RedisBit(_client);
            Expire      = new RedisExpire(_client);
            Sort        = new RedisSort(_client);
            Number      = new RedisNumber(_client);
        }
예제 #2
0
        public IActionResult JoinProjectIco([FromBody] IcoOrderReq icoOrder)
        {
            try
            {
                var     reply = Client.JoinProjectIco(icoOrder);
                JObject data  = new JObject();
                data["user_id"]     = reply.UserId.ToString();
                data["project_id"]  = reply.ProjectId;
                data["stage_id"]    = reply.StageId;
                data["price"]       = reply.Price;
                data["base_coin"]   = reply.BaseCoin;
                data["target_coin"] = reply.TargetCoin;
                data["pay_count"]   = reply.PayAmount;
                data["locktype"]    = reply.LockType;

                string jsonString = JsonHelper.ToJson(data);
                //调用Redis服务
                string message = "";
                var    result  = RedisScript.GetInstance().ExecuteScript(jsonString, out message);
                if (result)
                {
                    return(Json(new JsonResultModel(ReturnCode.Success, "User join project successful.")));
                }
                else
                {
                    return(Json(new JsonResultModel(ReturnCode.SubmitError, message)));
                }
            }
            catch (RpcException ex)
            {
                return(Json(new JsonResultModel(ReturnCode.SubmitError, ex.Status.Detail)));
            }
        }
예제 #3
0
        public void RedisScriptTest()
        {
            string script = "{\"user_id\": \"24\", \"project_id\": \"6\", \"stage_id\": \"9\", \"price\":\"1500000000\", \"base_coin\":\"100001\", \"target_coin\":\"100002\", \"pay_count\":\"250000000\", \"locktype\":\"2\"}";

            var    redis = new RedisScript("192.168.1.145:6379", "123456");
            string message;
            bool   result = redis.ExecuteScript(script, out message);

            Console.WriteLine($"Result: {result}, Message:{message}");
        }
예제 #4
0
        public void ConvertObjectToJson()
        {
            JObject data = new JObject();

            data["user_id"]     = "24";       //用户Id
            data["project_id"]  = 6;          //项目id
            data["stage_id"]    = 9;
            data["price"]       = 1500000000; //价格
            data["base_coin"]   = "100001";
            data["target_coin"] = "100002";
            data["pay_count"]   = 250000000; //花费
            data["locktype"]    = 2;         //锁定状态

            string jsonData = JsonHelper.ToJson(data, true);

            string message;
            bool   result = RedisScript.GetInstance().ExecuteScript(jsonData, out message);

            Console.WriteLine($"Result: {result}, Message:{message}");
        }
예제 #5
0
        public virtual ValueTask <RedisResult> ExecuteScriptAsync(RedisScript script, params string[] parameters)
        {
            var actions = new NoLockInMemoryDatabaseActions(_data);

            switch (script)
            {
            case RedisScript.JoinedParticipantsRepository_RemoveParticipant:
                return(JoinedParticipantsRepository_RemoveParticipant(actions, parameters[0], parameters[1],
                                                                      parameters[2]));

            case RedisScript.JoinedParticipantsRepository_RemoveParticipantSafe:
                return(JoinedParticipantsRepository_RemoveParticipantSafe(actions, parameters[0], parameters[1],
                                                                          parameters[2], parameters[3]));

            case RedisScript.RoomRepository_SetParticipantRoom:
                return(RoomRepository_SetParticipantRoom(actions, parameters[0], parameters[1], parameters[2],
                                                         parameters[3]));

            default:
                throw new ArgumentOutOfRangeException(nameof(script), script, null);
            }
        }
        /// <summary>
        ///     初始化数据库环境、实例化子类中,所有Set属性
        /// </summary>
        public void Initializer()
        {
            if (IsInitializer) { return; }
            _client = new RedisClient(_redisConnection);
            IsInitializer = true;

            Connection = new RedisConnection(_client);
            Hash = new RedisHash(_client);
            Key = new RedisKey(_client);
            List = new RedisList(_client);
            PubSub = new RedisPubSub(_client);
            Script = new RedisScript(_client);
            Server = new RedisServer(_client);
            Set = new RedisSet(_client);
            SortedSet = new RedisSortedSet(_client);
            String = new RedisString(_client);
            Transaction = new RedisTransaction(_client);
            Bit = new RedisBit(_client);
            Expire = new RedisExpire(_client);
            Sort = new RedisSort(_client);
            Number = new RedisNumber(_client);
        }
예제 #7
0
        public async ValueTask <RedisResult> ExecuteScriptAsync(RedisScript script, params string[] parameters)
        {
            var scriptContent = RedisScriptLoader.Load(script);

            return(await _database.ScriptEvaluateAsync(scriptContent, parameters.Select(x => (RedisKey)x).ToArray()));
        }
예제 #8
0
 public static string Load(RedisScript script)
 {
     return(_scripts[script]);
 }