복붙노트

[REDIS] 레디 스 파이썬에서 다중 연결을 생성 및 관리

REDIS

레디 스 파이썬에서 다중 연결을 생성 및 관리

나는 두 개의 데이터베이스를 저장하는 레디 스를 사용하고 있습니다 : 0과 1을 레디 스-PY 클라이언트 라이브러리를 통해. 나는 각 데이터베이스에 대해 두 개의 연결을 생성하고 싶습니다. 현재, 나는이 일을하고있다 :

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

그러나, 나는 연결에서 레디 스 객체를 생성 할 수있는 방법을 찾을 수가 없습니다.

>>> 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

나는 여기에 신인 실수를하고 있습니까?

해결법

  1. ==============================

    1.당신은 정말 그런 연결을 생성하지 않아야합니다. 나를 레디 스-PY 문서를 인용 해보자.

    당신은 정말 그런 연결을 생성하지 않아야합니다. 나를 레디 스-PY 문서를 인용 해보자.

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

    당신은 라이브러리를 사용하는 단일 연결을 지정할 수 없습니다. 각 레디 스 인스턴스는 자신의 연결 풀을해야합니다. execute_command ()가 호출 될 때, 그것은 풀에서 연결을 팝업 (또는 새로 열) 및 해당 연결을 사용합니다. 만 원하는 경우 클라이언트는 1 번에 최대 하나의 연결, 설정 MAX_CONNECTIONS을 가지고 있습니다.

  2. from https://stackoverflow.com/questions/8984870/creating-and-managing-multiple-connections-in-redis-python by cc-by-sa and MIT license