| 6 | |
| 7 | |
| 8 | class RedisHelper: |
| 9 | def __init__(self, host=None, port=None, db=None, pool_size=None, password=None, config_file=None): |
| 10 | self.config_file = '../config.json' |
| 11 | self.host = host |
| 12 | self.port = port |
| 13 | self.db = db |
| 14 | self.pool_size = pool_size |
| 15 | self.password = password |
| 16 | |
| 17 | self.initConfig() |
| 18 | |
| 19 | # 创建连接池 |
| 20 | self.redis_pool = redis.ConnectionPool( |
| 21 | host=self.host, |
| 22 | port=self.port, |
| 23 | db=self.db, |
| 24 | max_connections=self.pool_size, |
| 25 | password=self.password |
| 26 | ) |
| 27 | self.redis_conn = redis.StrictRedis(connection_pool=self.redis_pool, |
| 28 | decode_responses=True |
| 29 | ) |
| 30 | |
| 31 | # String 操作 |
| 32 | def set(self, key, value, expire=None): |
| 33 | """设置键值对到 Redis""" |
| 34 | self.redis_conn.set(key, value, ex=expire) |
| 35 | |
| 36 | def get(self, key): |
| 37 | """从 Redis 获取键对应的值""" |
| 38 | return self.redis_conn.get(key) |
| 39 | |
| 40 | # Hash 操作 |
| 41 | def hset(self, name, key, value): |
| 42 | """设置 Hash 中的字段值""" |
| 43 | self.redis_conn.hset(name, key, value) |
| 44 | |
| 45 | def hget(self, name, key): |
| 46 | """获取 Hash 中字段的值""" |
| 47 | return self.redis_conn.hget(name, key) |
| 48 | |
| 49 | # 集合操作 |
| 50 | def sadd(self, name, *values): |
| 51 | """向集合添加成员""" |
| 52 | self.redis_conn.sadd(name, *values) |
| 53 | |
| 54 | def smembers(self, name): |
| 55 | """获取集合中的所有成员""" |
| 56 | return self.redis_conn.smembers(name) |
| 57 | |
| 58 | # 事务 |
| 59 | def execute_transaction(self, func): |
| 60 | """执行一个事务""" |
| 61 | with self.redis_conn.pipeline(transaction=True) as pipe: |
| 62 | while True: |
| 63 | try: |
| 64 | pipe.watch("key_to_watch") |
| 65 | pipe.multi() |