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 + ",")); }
/// <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); }
/// <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>()); }