如何跨多个模块处理Redis连接?

时间:2014-10-02 21:43:33

标签: python redis

我正在构建一个使用Redis作为数据存储区的应用程序。因此,我有许多与Redis交互的函数,通常作为一组Redis命令的包装器。

随着应用程序越过我的初始.py文件,我对如何处理跨多个模块的Redis连接感到茫然。目前,我指向Redis连接的指针在文件的顶部被声明,并且每个函数都假定它存在而不是传递给每个函数。如果我将这些函数分散到多个文件中,那么每个模块都会创建自己的Redis指针,并且应用程序的每个实例都会打开与Redis的多个连接。

我想要一个实例来使用相同的连接。

想要这样做:

import redis
class MyApp(object):
    def __init__(self):
        self.r = redis.Redis()
    (all my app functions that touch redis go here)

我也不想将Redis指针作为参数传递给每个函数。

还有其他方法我可以从不同的模块中获取函数来共享一个Redis()实例吗?

1 个答案:

答案 0 :(得分:3)

这样的事情:

模块redis_manager

class RedisManager(object):
    def __init__():
        # Connect to redis etc
        self.redis = 12345


redis_manager = RedisManager()

然后在您的其他模块中,您可以:

from redis_manager import redis_manager

redis_manager.redis.stuff