2881099/FreeRedis

请问 如何通过Key前缀 删除阿里云的分片集群的多个Key

binjinshi123 opened this issue · 2 comments

请问 如何通过Key前缀 删除阿里云的分片集群的多个Key

foreach(var keys in cli.Scan("xxx*"))
cli.Del(keys);

完善 foreach scan 实现:

var keys = cli.Scan(0, "*", 100, null);
Console.WriteLine(string.Join(",", keys.items));
foreach (var ks in cli.Scan("*", 3, null)) Console.WriteLine(string.Join(",", ks));

var hkeys = cli.HScan("key1", 0, "*", 100);
Console.WriteLine(string.Join(",", hkeys.items.Select(a => $"{a.Key}={a.Value}")));
foreach (var ks in cli.HScan("key1", "*", 3)) Console.WriteLine(string.Join(",", ks.Select(a => $"{a.Key}={a.Value}")));

var skeys = cli.SScan("skey1", 0, "*", 100);
Console.WriteLine(string.Join(",", skeys.items));
foreach (var ks in cli.SScan("skey1", "*", 3)) Console.WriteLine(string.Join(",", ks));

var zkeys = cli.ZScan("zkey1", 0, "*", 100);
Console.WriteLine(string.Join(",", zkeys.items.Select(a => $"{a.member}={a.score}")));
foreach (var ks in cli.ZScan("zkey1", "*", 3)) Console.WriteLine(string.Join(",", ks.Select(a => $"{a.member}={a.score}")));

实测 hscan、zscan COUNT 参数设置太小的时候可能无效(如上设置的3)

这的确是个坑,HSCAN是为了处理大量数据而设计的,可能也是因为这个原因,在数据量较少的情况下count参数并不会生效,具体阈值是多少并没有实际测验过不过可以断定的是一百条数据一下估计是不会生效的。