You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

216 lines
9.0 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using StackExchange.Redis;
namespace RedisStuy
{
/// <summary>
/// 集合操作学习
/// </summary>
public class RedisSetStudy
{
#region 初始化
private IDatabase redisDatabase;
public RedisSetStudy()
{
redisDatabase = RedisHelper.GetRedisDatabase();
}
#endregion
/// <summary>
/// 添加单个值到集合中
/// </summary>
public bool SetAdd(RedisKey key, RedisValue value, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.SetAdd(key, value, flags);
}
/// <summary>
/// 添加一组值到集合中
/// </summary>
/// <returns>添加到集合中的元素的数量,不包括已经存在于集合中的所有元素。</returns>
public long SetAdd(RedisKey key, RedisValue[] values, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.SetAdd(key, values, flags);
}
/// <summary>
/// 获取两个集合运算的结果
/// </summary>
/// <param name="operation">集合运算Union 并集 Intersect交集 Difference 差集</param>
/// <param name="first">第一个集合</param>
/// <param name="second">第二个集合</param>
/// <param name="flags">命令参数</param>
/// <returns>两个集合运算(集合并,交,补)的结果</returns>
public RedisValue[] SetCombine(SetOperation operation, RedisKey first, RedisKey second, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.SetCombine(operation, first, second, flags);
}
/// <summary>
/// 获取指定集合,进行集合运算后的结果集
/// </summary>
/// <param name="operation">集合运算Union 并集 Intersect交集 Difference 差集</param>
/// <param name="keys">指定集合的一组key</param>
/// <param name="flags">命令参数</param>
/// <returns>指定的一组集合运算(集合并,交,补)的结果</returns>
public RedisValue[] SetCombine(SetOperation operation, RedisKey[] keys, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.SetCombine(operation, keys, flags);
}
/// <summary>
/// 此命令等于SetCombine但不是返回结果集而是将其存储在目的地中。
/// 如果目的地已经存在,则将其覆盖。
/// </summary>
/// <param name="operation">集合运算Union 并集 Intersect交集 Difference 差集</param>
/// <param name="destination">目标集合</param>
/// <param name="first">第一个集合</param>
/// <param name="second">第二个集合</param>
/// <param name="flags">命令参数</param>
/// <returns>
/// 结果集中的元素数目
/// </returns>
public long SetCombineAndStore(SetOperation operation, RedisKey destination, RedisKey first, RedisKey second, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.SetCombineAndStore(operation, destination, first, second, flags);
}
/// <summary>
/// 此命令等于SetCombine但不是返回结果集而是将其存储在目的地中。
/// 如果目的地已经存在,则将其覆盖。
/// </summary>
/// <param name="operation">集合运算Union 并集 Intersect交集 Difference 差集</param>
/// <param name="destination">目标集合</param>
/// <param name="keys">参与集合运算的一组key</param>
/// <param name="flags">命令参数</param>
/// <returns>结果集中的元素数目</returns>
public long SetCombineAndStore(SetOperation operation, RedisKey destination, RedisKey[] keys, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.SetCombineAndStore(operation, destination, keys,flags);
}
/// <summary>
/// 指定的值,在集合中是存在
/// </summary>
public bool SetContains(RedisKey key, RedisValue value, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.SetContains(key, value, flags);
}
/// <summary>
/// 获取集合中元素的数量
/// </summary>
public long SetLength(RedisKey key, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.SetLength(key, flags);
}
/// <summary>
/// 获取集合中所的元素
/// </summary>
public RedisValue[] SetMembers(RedisKey key, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.SetMembers(key, flags);
}
/// <summary>
/// 将 member 元素从 source 集合移动到 destination 集合
/// SMOVE 是原子性操作:如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。
/// 否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。
/// 当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。
/// 当 source 或 destination 不是集合类型时,返回一个错误。
/// </summary>
/// <param name="source">源集合</param>
/// <param name="destination">目标集合</param>
/// <param name="value">元素的值</param>
/// <param name="flags">命令参数</param>
/// <returns>
/// 1如果元素被移动
/// 0如果元素不是源成员则不执行操作。
/// </returns>
public bool SetMove(RedisKey source, RedisKey destination, RedisValue value, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.SetMove(source, destination, value, flags);
}
/// <summary>
/// 移除并返回集合中的一个随机元素
/// </summary>
public RedisValue SetPop(RedisKey key, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.SetPop(key, flags);
}
/// <summary>
/// 获取集合中的一个随机元素
/// </summary>
public RedisValue SetRandomMember(RedisKey key, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.SetRandomMember(key, flags);
}
/// <summary>
/// 随机获取集合中指定数量的元素
/// </summary>
public RedisValue[] SetRandomMembers(RedisKey key, long count, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.SetRandomMembers(key, count, flags);
}
/// <summary>
/// 移除集合 key 中的一个 member 元素,不存在的 member 元素会被忽略
/// </summary>
public bool SetRemove(RedisKey key, RedisValue value, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.SetRemove(key, value, flags);
}
/// <summary>
/// 移除集合 key 中多个 member 元素,不存在的 member 元素会被忽略
/// </summary>
public long SetRemove(RedisKey key, RedisValue[] values, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.SetRemove(key, values, flags);
}
/// <summary>
/// 增量遍历集合
/// 注意通过光标恢复迭代将原始枚举或枚举器转换为ISCANIN光标。
/// </summary>
/// <param name="key">键</param>
/// <param name="pattern">模式值</param>
/// <param name="pageSize">页大小</param>
/// <param name="cursor">cursor</param>
/// <param name="pageOffset">页偏移量</param>
/// <param name="flags">命令参数</param>
/// <returns>
/// 集合中所有元素
/// </returns>
public IEnumerable<RedisValue> SetScan(RedisKey key, RedisValue pattern = default(RedisValue), int pageSize = 10, long cursor = 0, int pageOffset = 0, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.SetScan(key, pattern, pageSize, cursor, pageOffset, flags);
}
/// <summary>
/// 增量遍历集合
/// 注意通过光标恢复迭代将原始枚举或枚举器转换为ISCANIN光标。
/// </summary>
/// <param name="key">键</param>
/// <param name="pattern">模式值</param>
/// <param name="pageSize">页大小</param>
/// <param name="flags">命令参数</param>
/// <returns>
/// 集合中所有元素
/// </returns>
public IEnumerable<RedisValue> SetScan(RedisKey key, RedisValue pattern, int pageSize, CommandFlags flags)
{
return redisDatabase.SetScan(key, pattern, pageSize, flags);
}
}
}