我有一个 Redis 数据库,里面有成千上万个键,我目前正在运行以下代码来获取所有的键:
string[] keysArr = keys.Select(key => (string)key).ToArray();
但是由于我有很多密钥,这需要很长时间。我想限制读取密钥的数量。因此,我正在尝试运行一个执行命令,每次获取100个密钥:
var keys = Redis.Connection.GetDatabase(dbNum).Execute("scan", 0, "count", 100);
这个命令成功运行了,但是由于它是私有的,无法访问该值,即使RedisResult类提供了一个显式转换,也无法进行转换:
public static explicit operator string[] (RedisResult result);
有没有办法从 Redis 中一次获取 x 个键的值?
谢谢
RedisResult
数组中的光标值转换为Int64
,而不是(int)arr[0];
。我认为这将与IScanningResult.Cursor
是一个Int64
类型保持一致。(天哪,我正在尝试使用ExecuteCommand
直接使用SCAN
命令)。 - Stephen Swensenstring
——我记得曾经有一个Redis集群代理(可能现在已经被废弃了)使该值不是整数(尽管这是在本答案之后出现的)。 - Marc Gravell