[python] asyncio 지원하는 redis client 찾기

2개 있다. aioredis 와 asyncio_redis. asyncio_redis가 먼저나왔고 aioredis가 그 뒤로 나왔다. 첫번째 것이 괜찮았으면 두번째 것이 나왔겠냐 싶은데 일단….

aioredis 는 hiredis package 의존이 있다. hiredis 는 windows 지원을 하지 않는다. (workaround 가 있지만 개발자는 업데이트때 보장하지 않는다고 했다. 1 ) aioredis 개발자가 pure python fallback parser는 TBD라고 하니2 그냥 asyncio_redis 쓰다가 바꿔야겠다.

update : 쓰다보니 발견한 차이점이라면 asyncio_redis 는 zrangebyscore의 limit 옵션 구현이 안됐군 (참고 http://redis.io/commands/zrangebyscore)

update 2 : asyncio_redis 에 구현된 connection pool은 이미 사용하고 있는 connection을 할당하는 심각한 문제도 있다. (어떻게 재현하는 지는 다시 포스팅하겠음)

update 3: aioredis 개발자가 “hiredis parser가 짱 빠른거 같아 그냥 쓸래” 라는 것을 “님아 그럼 윈도우즈 사용자는 못씀!” 이라고 일단 징징거려서3 “i’ll consider this” 라는 대답도 받았으나 해당 이슈를 close 에서 안빼는 걸로봐서는 그다지 의지는 없는 듯 -_- 그래서 일단 내가 아쉬우니 asyncio_redis package용으로 간단한 ConnectionPool 만들었다. 이런일이 있을 때마다 windows python은 왕따 구나 싶은 생각이 자꾸 든다. 피해의식인가 =_=

update 4 : 못참는 용자들이 hiredis쪽에 windows support pull request를 넣고 있다. 신난다. 조만간 해결될 듯.

update 5 : 이제 aioredis 를 windows 에서도 쓸 수 있다. 2015-05-04 현재 pubsub 기능이 pypi 에 등록된 것에서는 작동하지 않지만(github 버전으로는 low-level api로 작동함) asyncio-redis 에 구현 되지 않은 command 옵션들도 지원하고 slaveof 명령어도 지원한다. 새 버전이 나오면 asyncio-redis 를 완벽하게 대체할 수 있을 것이다.

update 6 : asyncio는 2015-10-19 현재 pub/sub도 지원하고 redis 3.0 cluster는 버전업 준비중이다. 우리팀은 asyncio-redis를 삭제했다.