コード例 #1
0
ファイル: RedisCacheProvider.cs プロジェクト: github4n/caicai
        /// <summary>
        /// 取得名单列表
        /// </summary>
        public async Task <IEnumerable <ListItem> > GetRosterListAsync(RosterType rosterType, string api, Policy policy, string policyKey)
        {
            var key = FromatRosterKey(rosterType, api, policy, policyKey);

            //判断是否存在key
            if (await _db.ExistsAsync(key))
            {
                //取得数据
                var data = await _db.ZRangeWithScoresAsync(key, 0, -1);

                return(data.Select(x => new ListItem {
                    Value = x.member, ExpireTicks = x.score
                }));
            }
            else
            {
                var data = (await _storage.GetRosterListAsync(rosterType, api, policy, policyKey)).ToList();

                //Ip地址转换
                if (policy == Policy.Ip)
                {
                    foreach (var item in data)
                    {
                        item.Value = CommonHelper.IpToNum(item.Value);
                        //保存
                        await _db.ZAddAsync(key, (item.ExpireTicks, item.Value));
                    }
                }
                //设置缓存过期时间
                await _db.ExpireAsync(key, expiry.Value);

                return(data);
            }
        }
コード例 #2
0
        /// <summary>
        /// 取得名单列表(分页)
        /// </summary>
        /// <param name="rosterType">名单类型</param>
        /// <param name="api">API</param>
        /// <param name="policy">策略</param>
        /// <param name="policyKey">策略Key</param>
        public async Task <(long count, IEnumerable <ListItem> items)> GetRosterListAsync(RosterType rosterType, string api, Policy policy, string policyKey, long skip, long take)
        {
            var key = FromatRosterKey(rosterType, api, policy, policyKey);
            //取得件数
            var count = await _db.ZCardAsync(key);

            if (count == 0)
            {
                return(0, new List <ListItem>());
            }

            //取得数据
            var data = await _db.ZRangeWithScoresAsync(key, 0, -1);

            return(count, data.Select(x => new ListItem {
                Value = x.member, ExpireTicks = x.score
            }));
        }