zoukankan      html  css  js  c++  java
  • 【译】StackExchange.Redis 中文文档(九)服务器相关命令

    Where are KEYS, SCAN, FLUSHDB etc?

    一些非常常见的重复出现的问题是:

    似乎没有 Keys(...)Scan(...) 方法? 如何查询数据库中存在哪些键?

    or

    似乎没有 Flush(...) 方法? 如何删除数据库中的所有 keys?

    这里的关键词是最后一个:数据库。因为 StackExchange.Redis 的目标是针对群集等场景,所以了解哪些命令针对 database(可以分布在多个节点上的逻辑数据库)以及哪些命令针对 server 很重要。以下命令均以单个服务器为目标:

    • KEYS / SCAN
    • FLUSHDB / FLUSHALL
    • RANDOMKEY
    • CLIENT
    • CLUSTER
    • CONFIG / INFO / TIME
    • REPLICAOF
    • SAVE / BGSAVE / LASTSAVE
    • SCRIPT (not to be confused with EVAL / EVALSHA)
    • SHUTDOWN
    • SLOWLOG
    • PUBSUB (not to be confused with PUBLISH / SUBSCRIBE / etc)
    • some DEBUG operations

    其中大多数看上去都很明显,但是前三行并不是那么明显:

    • KEYS / SCAN 仅列出当前服务器上的密钥;不是更广泛的逻辑数据库
    • FLUSHDB / FLUSHALL 只删除当前服务器上的密钥;不是更广泛的逻辑数据库
    • RANDOMKEY 仅选择当前服务器上的密钥;不是更广泛的逻辑数据库

    实际上,StackExchange.Redis 通过简单地随机选择目标服务器来欺骗 IDatabase API 上的 RANDOMKEY,而其他服务器则不可能。

    怎么使用?

    简单: 开启一个 server 对象,而非 database 对象。

    // get the target server
    var server = conn.GetServer(someServer);
    
    // show all keys in database 0 that include "foo" in their name
    foreach(var key in server.Keys(pattern: "*foo*")) {
        Console.WriteLine(key);
    }
    
    // completely wipe ALL keys from database 0
    server.FlushDatabase();
    

    请注意,与 IDatabase API(在 GetDatabase() 调用中已选择目标数据库)不同,这些方法采用数据库的可选参数,或者默认为 0

    Keys(...) 方法值得一提:它不具有 *Async 对应项,这是不寻常的。原因是系统将确定最适合使用的方法(根据服务器版本,使用 KEYSSCAN),并且在可能的情况下,将使用 SCAN 方法退回。 一个 IEnumerable<RedisKey> 在内部完成所有分页的操作:因此你无需查看游标操作的实现详细信息。如果 SCAN 不可用,它将使用 KEYS,这可能会导致服务器阻塞。无论哪种方式,SCANKEYS 都需要清除整个密钥空间,因此应避免在生产服务器上使用,或至少应针对副本服务器。

    我必须记住连接的服务器是哪个?

    你可以使用 conn.GetEndPoints() 列出端点(所有端点或原始配置中指定的端点:不一定是同一件事),并使用 GetServer() 进行迭代以找到你要使用的服务器。

    原文地址:Where are KEYS / SCAN / FLUSH*?

  • 相关阅读:
    poj3669 广搜
    检索所有课程都选修的的学生的学号与姓名
    UVA10160 Servicing Stations
    uva11205 The broken pedometer 子集生成
    poj1101 the game 广搜
    poj3009 Curling 2.0 深搜
    poj 1564 Sum It Up 搜索
    HDU 2268 How To Use The Car (数学题)
    codeforces 467C George and Job(简单dp,看了题解抄一遍)
    HDU 2267 How Many People Can Survive(广搜,简单)
  • 原文地址:https://www.cnblogs.com/liang24/p/13847233.html
Copyright © 2011-2022 走看看