SuperAPI AI 工具集

frappe-core-cache

通用与其它

查看项目

更新于 10-16 06:17

技能介绍

用途:在 Frappe 应用中实现 Redis 缓存、缓存失效与分布式锁,避免陈旧缓存、缺少锁导致的竞态条件。

主要能力:frappe.cache.set_value/get_value/delete_value/delete_keys 支持 TTL、generator 与用户级作用域;hset/hget/hgetall/hdel/hexists 操作 Redis 哈希;@redis_cache 装饰器自动缓存函数结果并支持 ttl 与 clear_cache();frappe.get_cached_doc 与 frappe.clear_document_cache 缓存文档;frappe.local.cache 为单请求内字典缓存(非 Redis);frappe.lock 提供上下文管理器式分布式锁。

使用方式:按决策树选择模式;缓存键建议加应用前缀;失效可用 TTL、hooks.py 事件钩子或两者混合。

限制:@redis_cache 参数必须可哈希,不可用于有副作用的函数;get_cached_doc 返回共享引用不可修改;锁不可长时间持有;避免缓存大于 1MB 对象;不要直接写内部缓存键;不要例行调用 frappe.clear_cache()。版本差异:@redis_cache 在 v15 起可用,v14 不支持。Redis 默认端口 13000,maxmemory 256mb,策略 allkeys-lru。