可直接使用如下代码,对redis进行直接的使用。
封装代码:
import redis
import os
def singleton(cls):
""" 单例模式装饰器 """
instances = {}
def get_instance(*args, **kwargs):
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return get_instance
# 创建一个带有装饰器的类
@singleton
class RedisPool:
def __init__(self):
self._redis_conn = None
self.pool = redis.ConnectionPool(
host=os.getenv('REDIS_IP') if os.getenv('REDIS_IP') else '127.0.0.1',
port=6379,
decode_responses=True
)
@property
def redis_conn(self) -> redis.Redis:
self._redis_conn = redis.Redis(connection_pool=self.pool)
return self._redis_conn
下次需要使用redis的时候,直接调用上面封装好的方法即可,如:
r = RedisPool().redis_conn
r.set('foo', 'bar')
r.lpush("a","b")
r.lpush("a","c")
r.lpush("a","d")
r.lpop("a")