本系列将和大家分享Redis分布式缓存,本章主要简单介绍下Redis中的Set类型,以及使用Redis解决数据去重、共同好友、可能认识、统计访问网站的IP数、统计点赞数和随机获取某项值等问题。
Set类型:用哈希表来保持字符串的唯一性,没有先后顺序,存储一些集合性的数据。(去重、无序集合)
Set类型最大的特点就是无序、去重,以及交集、差集、并集的使用。
存储形式:key--List
首先先给大家Show一波Redis中与Set类型相关的API:
using System.Collections.Generic;namespace TianYa.Redis.Service{ /// /// Set:用哈希表来保持字符串的唯一性,没有先后顺序,存储一些集合性的数据。(去重、无序集合、交差并的使用) /// 1、共同好友、可能认识(二度好友) /// 2、利用唯一性,可以统计访问网站的所有独立IP /// public class RedisSetService : RedisBase { #region 添加 /// /// 往set集合中添加item /// public void AddItemToSet(string setId, string item) { base._redisClient.AddItemToSet(setId, item); } /// /// 往set集合中添加list集合 /// public void AddRangeToSet(string setId, List items) { base._redisClient.AddRangeToSet(setId, items); } #endregion 添加 #region 获取 /// /// 随机获取set集合中的一个值 /// public string GetRandomItemFromSet(string setId) { return base._redisClient.GetRandomItemFromSet(setId); } /// /// 获取set集合中值的数量 /// public long GetSetCount(string setId) { return base._redisClient.GetSetCount(setId); } /// /// 获取set集合中的所有值 /// public HashSet GetAllItemsFromSet(string setId) { return base._redisClient.GetAllItemsFromSet(setId); } #endregion 获取 #region 删除 /// /// 随机删除set集合中的一个值 /// public string RandomRemoveItemFromSet(string setId) { return base._redisClient.PopItemFromSet(setId); } /// /// 删除set集合中指定的item /// public void RemoveItemFromSet(string setId, string item) { base._redisClient.RemoveItemFromSet(setId, item); } #endregion 删除 #region 其它 /// /// 从fromSetId集合中移除值为item的值,并把item添加到toSetId集合中 /// public void MoveBetweenSets(string fromSetId, string toSetId, string item) { base._redisClient.MoveBetweenSets(fromSetId, toSetId, item); } /// /// 返回setIds多个集合中的并集 /// public HashSet GetUnionFromSets(params string[] setIds) { return base._redisClient.GetUnionFromSets(setIds); } /// /// 返回setIds多个集合中的交集 /// public HashSet GetIntersectFromSets(params string[] setIds) { return base._redisClient.GetIntersectFromSets(setIds); } /// /// 返回withSetIds多个集合中的差集 /// /// 原集合 /// 其他集合 /// 出现在原集合,但不包含在其他集合 public HashSet GetDifferencesFromSet(string fromSetId, params string[] withSetIds) { return base._redisClient.GetDifferencesFromSet(fromSetId, withSetIds); } /// /// 将setIds多个集合中的并集放入intoSetId集合中 /// public void StoreUnionFromSets(string intoSetId, string[] setIds) { base._redisClient.StoreUnionFromSets(intoSetId, setIds); } /// /// 把fromSetId集合中的数据与withSetIds集合中的数据对比,fromSetId集合中不存在withSetIds集合中,则把这些不存在的数据放入intoSetId集合中 /// public void StoreDifferencesFromSet(string intoSetId, string fromSetId, string[] withSetIds) { base._redisClient.StoreDifferencesFromSet(intoSetId, fromSetId, withSetIds); } #e.........