public void Set()
        {
            //应用场景:
            //Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,
            //set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。
            //比如在微博应用中,每个人的好友存在一个集合(set)中,这样求两个人的共同好友的操作,可能就只需要用求交集命令即可。
            //Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实

            var redis = new RedisHelper();

            redis.AddItemToSet("A", "B");
            redis.AddItemToSet("A", "C");
            redis.AddItemToSet("A", "D");
            redis.AddItemToSet("A", "E");
            redis.AddItemToSet("A", "F");
            redis.AddItemToSet("A", "F");

            redis.AddItemToSet("B", "C");
            redis.AddItemToSet("B", "F");

            //求差集
            Console.WriteLine("A,B集合差集");
            redis.GetDifferencesFromSet("A", "B").ToList<string>().ForEach(e => Console.Write(e + ","));

            //求集合交集
            Console.WriteLine("\nA,B集合交集");
            redis.GetIntersectFromSets(new string[] { "A", "B" }).ToList<string>().ForEach(e => Console.Write(e + ","));

            //求集合并集
            Console.WriteLine("\nA,B集合并集");
            redis.GetUnionFromSets(new string[] { "A", "B" }).ToList<string>().ForEach(e => Console.Write(e + ","));
        }
Exemple #2
0
        /// <summary>
        /// 获取资源包
        /// </summary>
        public PackageContract GetPackage(long packageId)
        {
            var key = string.Concat("_preview_package_content_", packageId);

            var cacheContent = RedisHelper.GetItemFromSet <PackageContract>(key).FirstOrDefault();

            if (cacheContent != null)
            {
                return(cacheContent);
            }

            var result = new RestClient(100001).ExecuteGet <CiWong.Resource.Preview.DataContracts.ReturnResult <PackageContract> >(WebAPI.GetPackage, new { packageId = packageId });

            if (result.Ret == 0 && null != result.Data)
            {
                RedisHelper.AddItemToSet(key, result.Data);
                return(result.Data);
            }
            return(null);
        }
Exemple #3
0
        /// <summary>
        /// 获取模块
        /// </summary>
        /// <param name="packageId"></param>
        /// <returns></returns>

        public List <TaskModuleContract> GetTaskModules(long packageId)
        {
            var key = string.Concat("_preview_list_module_content_", packageId);

            var cacheContent = RedisHelper.GetItemFromSet <List <TaskModuleContract> >(key).FirstOrDefault();

            if (cacheContent != null)
            {
                return(cacheContent);
            }

            var result = new RestClient(100001).ExecuteGet <CiWong.Resource.Preview.DataContracts.ReturnResult <List <TaskModuleContract> > >(WebAPI.GetModules, new { packageId = packageId });

            ///判断数据是否获取成功
            if (result.Ret == 0 && null != result.Data && result.Data.Any())
            {
                RedisHelper.AddItemToSet(key, result.Data.ToList());
                return(result.Data.ToList());
            }
            return(new List <TaskModuleContract>());
        }