AI实验室后端
This commit is contained in:
+37
-13
@@ -1,3 +1,5 @@
|
||||
import json
|
||||
|
||||
import redis
|
||||
|
||||
|
||||
@@ -5,7 +7,7 @@ import redis
|
||||
|
||||
|
||||
class RedisClient:
|
||||
def __init__(self, config_path="config.yaml"):
|
||||
def __init__(self):
|
||||
self.redis = redis.Redis(
|
||||
"10.10.12.101",
|
||||
6379,
|
||||
@@ -13,17 +15,14 @@ class RedisClient:
|
||||
decode_responses=True,
|
||||
)
|
||||
|
||||
def set_online(self, device_id: str):
|
||||
key = f"device:online:{device_id}"
|
||||
self.redis.set(key, 1)
|
||||
|
||||
def set_offline(self, device_id: str):
|
||||
key = f"device:online:{device_id}"
|
||||
self.redis.delete(key)
|
||||
|
||||
def is_device_online(self, device_id: str) -> bool:
|
||||
key = f"device:online:{device_id}"
|
||||
return self.redis.exists(key) == 1
|
||||
# 已废弃 之前使用webhookds的方式通知 但是因为通知不及时的原因,现在在线状态全盘交给device status
|
||||
# def set_online(self, device_id: str):
|
||||
# key = f"device:online:{device_id}"
|
||||
# self.redis.set(key, 1)
|
||||
#
|
||||
# def set_offline(self, device_id: str):
|
||||
# key = f"device:online:{device_id}"
|
||||
# self.redis.delete(key)
|
||||
|
||||
def set_device_info(self, device_id: str, info: dict):
|
||||
"""
|
||||
@@ -41,7 +40,32 @@ class RedisClient:
|
||||
|
||||
def get_device_info(self, device_id: str) -> dict:
|
||||
key = f"device:info:{device_id}"
|
||||
return self.redis.hgetall(key)
|
||||
raw_info = self.redis.hgetall(key)
|
||||
return raw_info
|
||||
|
||||
def get_value(self, key: str):
|
||||
"""
|
||||
获取 Redis 中的值,如果是 JSON 字符串自动解析为 dict
|
||||
"""
|
||||
value = self.redis.get(key)
|
||||
if not value:
|
||||
return None
|
||||
try:
|
||||
return json.loads(value)
|
||||
except json.JSONDecodeError:
|
||||
return value
|
||||
|
||||
def set_value(self, key: str, value, expire: int = None):
|
||||
"""
|
||||
存储 key-value,value 可以是 dict,自动序列化为 JSON
|
||||
expire 单位秒
|
||||
"""
|
||||
if isinstance(value, (dict, list)):
|
||||
value = json.dumps(value)
|
||||
if expire:
|
||||
self.redis.set(key, value, ex=expire)
|
||||
else:
|
||||
self.redis.set(key, value)
|
||||
|
||||
|
||||
redis_client = RedisClient()
|
||||
|
||||
Reference in New Issue
Block a user