Spaces:
Sleeping
Sleeping
| import time | |
| from functools import wraps | |
| import json | |
| class MemoryCache: | |
| _instance = None | |
| def __new__(cls): | |
| if cls._instance is None: | |
| cls._instance = super(MemoryCache, cls).__new__(cls) | |
| cls._instance.cache = {} | |
| cls._instance.timestamps = {} | |
| return cls._instance | |
| def get(self, key): | |
| """获取缓存,检查是否过期""" | |
| if key in self.cache: | |
| timestamp = self.timestamps.get(key, 0) | |
| if timestamp > time.time(): | |
| return self.cache[key] | |
| else: | |
| # 过期则删除 | |
| self.delete(key) | |
| return None | |
| def set(self, key, value, expiration=86400): | |
| """设置缓存,带过期时间""" | |
| self.cache[key] = value | |
| self.timestamps[key] = time.time() + expiration | |
| def delete(self, key): | |
| """删除缓存""" | |
| if key in self.cache: | |
| del self.cache[key] | |
| if key in self.timestamps: | |
| del self.timestamps[key] | |
| def clear_by_prefix(self, prefix): | |
| """按前缀清除缓存""" | |
| to_delete = [k for k in self.cache.keys() if k.startswith(prefix)] | |
| for key in to_delete: | |
| self.delete(key) | |
| def get_cache_info(self, key): | |
| """获取缓存信息""" | |
| if key in self.cache and key in self.timestamps: | |
| return { | |
| "exists": True, | |
| "expires_at": self.timestamps[key], | |
| "expires_in": int(self.timestamps[key] - time.time()) | |
| } | |
| return {"exists": False} | |
| def clear_all(self): | |
| """清除所有缓存""" | |
| self.cache.clear() | |
| self.timestamps.clear() | |
| # 创建缓存实例 | |
| cache = MemoryCache() | |