python关于多线程访问redis的问题

我想实现一个类似于scrapy-redis的功能。我采用多线程(threading)或者协程(gevent)来访问redis(使用redis.py)但是在访问过程中,我发现和scrapy-redis有个区别,scrapy-redis连接redis 的client数目永远是1,我的程序因为使用并发操作client数目会暴涨,而且不明白什么原因跑一段时间后在从列表取数据的时候(lpop或者rpop之类)会卡住,一直卡住。这个问题困扰我一周了,希望有大神能解答我的疑惑

clipboard.png

client多的时候能够上千甚至数千

阅读 10.3k
2 个回答
  1. 减少client,比如使用连接池
    https://segmentfault.com/q/10...

>>> pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
>>> r = redis.Redis(connection_pool=pool)
  1. 卡住可能是列表没数据吧!

新手上路,请多包涵

使用 redis.Redis() 默认会创建一个 2 ** 31 大小的链接池

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题