或者
好像也没有 Flush(…) 方法?我该怎样才能移除掉所有在数据库中的key?
奇怪的是这里的关键字的最后一个是:数据库。????
由于StackExchange.Redis 服务的目标场景(或者宗旨)是集群服务,重要的是要知道命令所面向的数据库(可分布在多个节点的逻辑数据库),还有命令所面向的服务器。下面这些命令都是面向单个服务器的:
- KEYS / SCAN
- FLUSHDB / FLUSHALL
- RANDOMKEY
- CLUSTER
- CONFIG / INFO / TIME
- SLAVEOF
- SAVE / BGSAVE / LASTSAVE
- SCRIPT ( 不要与 EVAL / EVALSHA 混淆 )
- SLOWLOG
- PUBSUB ( 不要与 PUBLISH / SUBSCRIBE 等命令混淆 )
- 一些 DEBUG 操作
(我可能遗忘了多个命令没有列举) 其中大多数会显得很明显,但是前三行就不那么明显:
- KEYS / SCAN 不是在所有的逻辑数据库中,而是仅列出当前服务器的key;
- FLUSHDB / FLUSHALL 不是在所有的逻辑数据库中,而是仅移除当前数据库中的key;
让我们先从一个服务器开始,而不是从一个数据库开始。
注意:这个和 IDatabase API是不同的(在调用 GetDatabase() 方法的时候目标数据库已被选择),可以给这些方法传一个可选参数来选择数据库,默认是0。
值得特别注意的是 Keys(…) 方法:该方法没有一个对应的 *Async 异步方法。原因是在后台运作,由系统确定出一个最合适的方法来使用(KEYS vs SCAN, 基于服务器的版本),并且如果可能的话将会使用 SCAN 方法来处理你回传的 IEnumerable