示例#1
0
        /// <summary>
        /// 添加名单
        /// </summary>
        /// <param name="rosterType">名单类型</param>
        /// <param name="policy">策略</param>
        /// <param name="policyKey">策略Key</param>
        /// <param name="expiry">过期时间</param>
        /// <param name="item">项目</param>
        /// <remarks>因为要保存过期时间,所以名单通过Redis 有序集合(sorted set)来存储,score来存储过期时间Ticks</remarks>
        public async Task AddRosterAsync(RosterType rosterType, string api, Policy policy, string policyKey, TimeSpan?expiry, params string[] item)
        {
            //保存名单
            await _storage.AddRosterAsync(rosterType, api, policy, policyKey, expiry, item);

            //从反名单中移除
            await _storage.RemoveRosterAsync(rosterType == RosterType.BlackList?RosterType.WhiteList : RosterType.BlackList, api, policy, policyKey, item);

            //清除缓存
            await _cache.ClearRosterListCacheAsync(rosterType, api, policy, policyKey);

            await _cache.ClearRosterListCacheAsync(rosterType == RosterType.BlackList?RosterType.WhiteList : RosterType.BlackList, api, policy, policyKey);
        }