import redis from app.core.config import settings class Redis(object): """ redis数据库操作 """ @staticmethod def _get_r(): host = settings.REDIS_HOST port = settings.REDIS_PORT db = 0 r = redis.StrictRedis(host, port, db) return r @classmethod def write(cls, key, value, expire=None): """ 写入键值对 """ # 判断是否有过期时间,没有就设置默认值 if expire: expire_in_seconds = expire else: expire_in_seconds = 100 r = cls._get_r() r.set(key, value, ex=expire_in_seconds) @classmethod def read(cls, key): """ 读取键值对内容 """ r = cls._get_r() value = r.get(key) return value.decode('utf-8') if value else value @classmethod def hset(cls, name, key, value): """ 写入hash表 """ r = cls._get_r() r.hset(name, key, value) @classmethod def hget(cls, name, key): """ 读取指定hash表的键值 """ r = cls._get_r() value = r.hget(name, key) return value.decode('utf-8') if value else value @classmethod def hgetall(cls, name): """ 获取指定hash表所有的值 """ r = cls._get_r() return r.hgetall(name) @classmethod def delete(cls, *names): """ 删除一个或者多个 """ r = cls._get_r() r.delete(*names) @classmethod def hdel(cls, name, key): """ 删除指定hash表的键值 """ r = cls._get_r() r.hdel(name, key) @classmethod def expire(cls, name, expire=None): """ 设置过期时间 """ if expire: expire_in_seconds = expire else: expire_in_seconds = 100 r = cls._get_r() r.expire(name, expire_in_seconds) if __name__ == '__main__': redis_client = Redis() # print(redis_client.write(key="1230", value=0)) redis_client.write(key="1230", value=10) # print(redis_client.read(key="1230"))