在多线程环境中如何在服务堆栈中正确使用Redis?

w

我以为我们应该使用basicredisclientmanager或pooledredisclientmanager?我试过了

private void dddddd()
{
    for(int i=0;i<=1000;i++)
    {
        var client = new BasicRedisClientManager(new string[] { "host1", "host2", "host3" }).GetClient();
        //do something with client
    }
}

对于前100个循环,此循环运行良好,但是此后,我始终收到错误消息“未知命令角色”?那是什么以及如何解决?我需要帮助!

我还尝试创建一个名为MyRedisMgr的新类,并创建了一个静态属性来创建某种单例,但是它也不起作用。

public BasicRedisClientManager MyMgr = new BasicRedisClientManager(new string[] { "host1", "host2", "host3" });

然后我像这样使用它

for(int i=0;i<=1000;i++)
{
    var client = MyRedisMgr.MyMgr.GetClient();
    //do something with client
}
神话

请阅读有关Redis Client Manager正确用法的文档,该文档仅应作为一个实例使用。

BasicRedisClientManager没有任何连接池所以每次通话时间GetClient()你打开与Redis的服务器新的TCP连接。除非您了解其中的含义,否则应该使用Pooled Redis客户管理器之一,例如:RedisManagerPool

您还需要在使用完客户端后始终对其进行处置,以便可以重新使用该客户端或正确处置TCP连接。

因此,您的代码示例应如下所示:

//Always use the same singleton instance of a Client Manager
var redisManager = new RedisManagerPool(masterHost);

for(int i=0;i<=1000;i++)
{
    using (var redis = redisManager.GetClient())
    {
        //do something with client
    }
}

“未知命令角色”错误是由于使用旧版本的Redis Server引起的。角色在Redis的2.8.12添加的命令,但该API应该如果你使用Redis的服务器v2.8.12 +只能用,所以你应该不会被默认收到此错误。您可以通过升级到稳定的v3.0或具有此命令的旧2.8版本的redis-server来避免此错误

如果要继续使用旧版本,请使用INFO命令检查您正在运行的版本,然后告诉ServiceStack.Redis该版本是什么:

RedisConfig.AssumeServerVersion = 2600; //e.g. v2.6
RedisConfig.AssumeServerVersion = 2612; //e.g. v2.6.12

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在多线程环境中正确使用EasyNetQ

来自分类Dev

我如何从析构函数中正确取消Boost的最后期限(在多线程环境中)?

来自分类Dev

如何在多线程环境中更好地使用ExecutorService?

来自分类Dev

如何在pyqt中正确使用线程?

来自分类Dev

在多线程程序中正确使用QSqlDatabase

来自分类Dev

多线程如何在Web环境中工作

来自分类Dev

如何在Java多线程环境中复制ArrayList <T>?

来自分类Dev

c-如何在多线程环境中处理SIGPIPE?

来自分类Dev

多线程如何在Web环境中工作

来自分类Dev

如何在多线程环境中使用Servlet

来自分类Dev

如何在多线程环境中使用序列

来自分类Dev

iOS - 如何在多线程中正确执行 sqlite3 写操作?

来自分类Dev

如何在Rails中正确使用/插入Redis?

来自分类Dev

如何在Koa中正确使用Redis(node.js)

来自分类Dev

如何在Rails中正确使用/插入Redis?

来自分类Dev

如何在Python中正确关闭线程

来自分类Dev

在多线程环境中获取正确的属性值的问题

来自分类Dev

在多线程环境中序列化concurrenthashmap的正确方法

来自分类Dev

在多线程环境中使用ZMQ的正确方法?

来自分类Dev

在多线程环境中使用ZMQ的正确方法?

来自分类Dev

(Java多线程)如何在多线程中传递参数?

来自分类Dev

如何在C中为多线程使用互斥锁?

来自分类Dev

MQ C API-如何在多线程环境中中止正在等待的`MQGET`

来自分类Dev

OBJ-C如何在多线程环境中为C ++单身添加锁?

来自分类Dev

如何在多线程环境中搜索特定的字符串表单列表。?

来自分类Dev

如何在多线程环境中有效使用RestTemplate?

来自分类Dev

如何在Swift中的Direction Array Reduction挑战中正确实现堆栈

来自分类Dev

如何在堆栈面板中正确放置元素?

来自分类Dev

如何在堆栈面板中正确对齐标签

Related 相关文章

  1. 1

    如何在多线程环境中正确使用EasyNetQ

  2. 2

    我如何从析构函数中正确取消Boost的最后期限(在多线程环境中)?

  3. 3

    如何在多线程环境中更好地使用ExecutorService?

  4. 4

    如何在pyqt中正确使用线程?

  5. 5

    在多线程程序中正确使用QSqlDatabase

  6. 6

    多线程如何在Web环境中工作

  7. 7

    如何在Java多线程环境中复制ArrayList <T>?

  8. 8

    c-如何在多线程环境中处理SIGPIPE?

  9. 9

    多线程如何在Web环境中工作

  10. 10

    如何在多线程环境中使用Servlet

  11. 11

    如何在多线程环境中使用序列

  12. 12

    iOS - 如何在多线程中正确执行 sqlite3 写操作?

  13. 13

    如何在Rails中正确使用/插入Redis?

  14. 14

    如何在Koa中正确使用Redis(node.js)

  15. 15

    如何在Rails中正确使用/插入Redis?

  16. 16

    如何在Python中正确关闭线程

  17. 17

    在多线程环境中获取正确的属性值的问题

  18. 18

    在多线程环境中序列化concurrenthashmap的正确方法

  19. 19

    在多线程环境中使用ZMQ的正确方法?

  20. 20

    在多线程环境中使用ZMQ的正确方法?

  21. 21

    (Java多线程)如何在多线程中传递参数?

  22. 22

    如何在C中为多线程使用互斥锁?

  23. 23

    MQ C API-如何在多线程环境中中止正在等待的`MQGET`

  24. 24

    OBJ-C如何在多线程环境中为C ++单身添加锁?

  25. 25

    如何在多线程环境中搜索特定的字符串表单列表。?

  26. 26

    如何在多线程环境中有效使用RestTemplate?

  27. 27

    如何在Swift中的Direction Array Reduction挑战中正确实现堆栈

  28. 28

    如何在堆栈面板中正确放置元素?

  29. 29

    如何在堆栈面板中正确对齐标签

热门标签

归档