当前位置: 首页 > 面试题库 >

在Redis Python中创建和管理多个连接

宁侯林
2023-03-14
问题内容

我正在使用Redis通过Redis-py客户端库存储两个数据库:0和1
。我想为每个数据库创建两个连接。目前,我正在这样做:

>>> connection0 = redis.Connection(host = 'localhost', port = 6379, db = 0)
>>> connection1 = redis.Connection(host = 'localhost', port = 6379, db = 1)
>>> connection0.connect()

但是,我似乎找不到从连接创建Redis对象的方法。

>>> store0 = redis.Redis(connection0)
>>> store0.info()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/7.0/lib/python2.7/site-packages/redis-2.4.11-py2.7.egg/redis/client.py", line 341, in info
    return self.execute_command('INFO')
  File "/Library/Frameworks/Python.framework/Versions/7.0/lib/python2.7/site-packages/redis-2.4.11-py2.7.egg/redis/client.py", line 278, in execute_command
    connection.send_command(*args)
  File "/Library/Frameworks/Python.framework/Versions/7.0/lib/python2.7/site-packages/redis-2.4.11-py2.7.egg/redis/connection.py", line 258, in send_command
    self.send_packed_command(self.pack_command(*args))
  File "/Library/Frameworks/Python.framework/Versions/7.0/lib/python2.7/site-packages/redis-2.4.11-py2.7.egg/redis/connection.py", line 241, in send_packed_command
    self.connect()
  File "/Library/Frameworks/Python.framework/Versions/7.0/lib/python2.7/site-packages/redis-2.4.11-py2.7.egg/redis/connection.py", line 187, in connect
    sock = self._connect()
  File "/Library/Frameworks/Python.framework/Versions/7.0/lib/python2.7/site-packages/redis-2.4.11-py2.7.egg/redis/connection.py", line 198, in _connect
    sock.connect((self.host, self.port))
  File "/Library/Frameworks/Python.framework/Versions/7.0/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
TypeError: coercing to Unicode: need string or buffer, Connection found

我在这里犯一个菜鸟错误吗?


问题答案:

您真的不应该那样创建连接。让我引用redis-py文档。

在后台,redis-
py使用连接池来管理与Redis服务器的连接。默认情况下,您创建的每个Redis实例将依次创建自己的连接池。通过将已创建的连接池实例传递给Redis类的connection_pool参数,可以覆盖此行为并使用现有的连接池。您可以选择执行此操作,以实现客户端分片或对连接的管理方式进行更精细的控制。

>>> pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
>>> r = redis.StrictRedis(connection_pool=pool)

您不能指定要与库一起使用的单个连接。每个Redis实例将具有其自己的连接池。调用execute_command()时,它将从池中弹出一个连接(或打开一个新的连接)并使用该连接。如果您只希望客户端一次最多建立一个连接,请将max_connections设置为1。



 类似资料:
  • 本文介绍创建和管理数据表的基本 SQL 操作和规范。 创建和管理表 SQL 语句参阅: CREATE TABLE DROP TABLE FLASHBACK TABLE RENAME TABLE ALTER TABLE RECOVER TABLE 表命名规范 同一业务或者模块的表尽可能使用相同的前缀,表名称尽可能表达含义; 多个单词以下划线分隔,不推荐超过32个字符。 建议对表的用途进行注释说明,以

  • 本文介绍创建和管理数据库的基本 SQL 操作和规范。 创建和管理库 SQL 语句参阅: CREATE DATABASE DROP DATABASE ALTER DATABASE 库命名规范 建议按照业务、产品线或者其它指标进行区分,一般不要超过 20 个字符。如:临时库(tmp_crm)、测试库(test_crm)。

  • 卷是一种块存储设备。我们把卷挂载在实例实例上,从而达到持久化存储的目的。您可以随时将某个卷安装在一个运行中的实例上,或者从实例上卸载卷,再把它安装再另一个实例上。您还可以给卷拍快照,以及删除卷等等。但只有管理员才能指定卷的类别。 创建卷 登录控制台。 在PROJECT选框中选择希望操作的Project。 在PROJECT选项卡种,打开Compute选项卡,然后点击Volumes子项。 点击Crea

  • 我有一个服务器和多个客户端,服务器将发送响应并等待确认,此外,我想永远保留该连接以获取下一条消息和确认,我应该如何在Spring集成中创建这些连接。我读到了Spring集成,我找不到保持连接的解决方案。

  • 本文介绍创建和管理索引的基本 SQL 操作和规范。 创建和管理索引 SQL 语句参阅: CREATE INDEX ADD INDEX DROP INDEX RENAME INDEX SHOW INDEXES [FROM|IN] 索引命名规范 唯一索引:uk_[表名称简写]_[字段名简写] 普通索引:idx_[表名称简写]_[字段名简写] 多单词组成的 column_name,取尽可能代表意义的缩写

  • 在对OpenStack网络进行操作前,请先设置如下环境变量: export OS_USERNAME=admin export OS_PASSWORD=password export OS_TENANT_NAME=admin export OS_AUTH_URL=http://localhost:5000/v2.0 创建网络 列出neutron工具的扩展功能: $ neutron ext-