[feat] RedisSet增加差集、交集和并集运算
This commit is contained in:
parent
aa66a0c731
commit
ad622567bd
|
@ -721,6 +721,23 @@ public class RedisClient : DisposeBase
|
|||
return Execute<TResult>(cmd, arr);
|
||||
}
|
||||
|
||||
/// <summary>执行命令</summary>
|
||||
/// <typeparam name="TArg"></typeparam>
|
||||
/// <typeparam name="TResult"></typeparam>
|
||||
/// <param name="cmd"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="key2"></param>
|
||||
/// <param name="args"></param>
|
||||
/// <returns></returns>
|
||||
public TResult? ExecuteByKey2<TArg, TResult>(String cmd, String key, String key2, TArg?[] args)
|
||||
{
|
||||
var arr = new Object?[args.Length + 2];
|
||||
arr[0] = key;
|
||||
arr[1] = key2;
|
||||
Array.Copy(args, 0, arr, 2, args.Length);
|
||||
return Execute<TResult>(cmd, arr);
|
||||
}
|
||||
|
||||
/// <summary>尝试执行命令。返回基本类型、对象、对象数组</summary>
|
||||
/// <param name="cmd"></param>
|
||||
/// <param name="args"></param>
|
||||
|
|
|
@ -128,5 +128,33 @@ public class RedisSet<T> : RedisBase, ICollection<T>
|
|||
/// <returns></returns>
|
||||
public T[] Diff(params String[] keys) => Execute((r, k) => r.ExecuteByKey<String, T[]>("SDIFF", Key, keys)) ?? [];
|
||||
|
||||
/// <summary>返回第一个集合与其他集合之间的差异</summary>
|
||||
/// <remarks>将结果保存到 destination 集合</remarks>
|
||||
/// <param name="destination">目的集合。如果 destination 集合已经存在,则将其覆盖。</param>
|
||||
/// <param name="keys"></param>
|
||||
/// <returns></returns>
|
||||
public Int32 DiffStore(String destination, params String[] keys) => Execute((r, k) => r.ExecuteByKey2<String, Int32>("SDIFFSTORE", destination, Key, keys));
|
||||
|
||||
/// <summary>返回所有给定集合的成员交集</summary>
|
||||
/// <param name="keys"></param>
|
||||
/// <returns></returns>
|
||||
public T[] Inter(params String[] keys) => Execute((r, k) => r.ExecuteByKey<String, T[]>("SINTER", Key, keys)) ?? [];
|
||||
|
||||
/// <summary>返回所有给定集合的成员交集</summary>
|
||||
/// <param name="destination">目的集合。如果 destination 集合已经存在,则将其覆盖。</param>
|
||||
/// <param name="keys"></param>
|
||||
/// <returns></returns>
|
||||
public Int32 InterStore(String destination, params String[] keys) => Execute((r, k) => r.ExecuteByKey2<String, Int32>("SINTERSTORE", destination, Key, keys));
|
||||
|
||||
/// <summary>返回所有给定集合的并集</summary>
|
||||
/// <param name="keys"></param>
|
||||
/// <returns></returns>
|
||||
public T[] Union(params String[] keys) => Execute((r, k) => r.ExecuteByKey<String, T[]>("SUNION", Key, keys)) ?? [];
|
||||
|
||||
/// <summary>返回所有给定集合的并集</summary>
|
||||
/// <param name="destination">目的集合。如果 destination 集合已经存在,则将其覆盖。</param>
|
||||
/// <param name="keys"></param>
|
||||
/// <returns></returns>
|
||||
public Int32 UnionStore(String destination, params String[] keys) => Execute((r, k) => r.ExecuteByKey2<String, Int32>("SUNIONSTORE", destination, Key, keys));
|
||||
#endregion
|
||||
}
|
Loading…
Reference in New Issue