zoukankan      html  css  js  c++  java
  • StackExchange.Redis 使用-同步 异步 即发即弃 (三)

    访问单个服务器

    有时候需要为单个服务器指定特定的命令 。

    IServer server = redis.GetServer("localhost", 6379);

    GetServer方法会接收一个EndPoint类或者一个唯一标识一台服务器的键值对。GetServer 方法返回一个IServer对象。 方法也可以是异步的只需要传入一个async-state

    可以使用如下方法获取所有可用的终结点:
    EndPoint[] endpoints = redis.GetEndPoints();

    使用IServer可以使用所有的shell命令,比如:

    DateTime lastSave = server.LastSave();
    ClientInfo[] clients = server.ClientList();

    如果报错在连接字符串后加 ,allowAdmin=true;


    同步 、异步、即发即弃

    这是StackExchange.Redis的三种主要使用机制:
    同步-在方法返回之前阻塞调用方(虽然会阻塞调用方,但绝不会阻塞其他线程 ,StackExchange.Redis中的关键点是共享调用者之间的连接)

    异步-在未来的某个时间点操作完成,会立刻返回一个 Task 或者 Task<T> : 之后可以调用
    .Wait() 阻塞当前线程,直到处理完成。
    ContinueWith 添加一个回调函数
    使用 await 这是一个高级特性简化了操作

    即发即弃-

    在上面的示例中已经演示同步调用的方法 。

    异步调用:
    string value = "abcdefg";
    await db.StringSetAsync("mykey", value);
    ...
    string value = await db.StringGetAsync("mykey");
    Console.WriteLine(value); // writes: "abcdefg"


    即发即弃:通过配置 CommandFlags 来实现即发即弃功能,在该实例中该方法会立即返回,如果是string则返回null 如果是int则返回0.这个操作将会继续在后台运行,一个典型的用法页面计数器的实现:
    db.StringIncrement(pageKey, flags: CommandFlags.FireAndForget);

  • 相关阅读:
    test example
    SSD: ReLU6
    jupyter
    ubuntu+anaconda
    linux动态库
    ssd制作数据和训练
    ncnn框架
    Lock->ReentrantLock->ReentrantReadWriteLock简介
    Synchronized简介与原理
    ThreadLocal简介与原理
  • 原文地址:https://www.cnblogs.com/fuqiang88/p/5460351.html
Copyright © 2011-2022 走看看