secra_memory/
lib.rs

1/// 内存模块
2///
3/// 使用 moka 提供统一的内存缓存管理功能
4///
5/// ## 功能特性
6///
7/// - **统一治理**:所有缓存操作必须通过 MemoryManager,插件不能直接访问 moka
8/// - **强隔离**:每个插件拥有独立的命名空间,避免 Key 冲突
9/// - **生命周期管理**:插件卸载/升级时自动清理相关缓存
10/// - **极简 API**:插件侧 API 简单易用,隐藏 moka 细节
11/// - **与 Cache 模块一致**:实现相同的 `Cache` trait,支持无缝切换
12///
13/// ## Key 格式规范
14///
15/// 所有内存缓存 Key 必须遵循以下格式:
16/// ```text
17/// {system}:plugin:{plugin_id}:{biz}:{key}
18/// ```
19///
20/// 示例:
21/// - `secra:plugin:user_plugin:user:123`
22/// - `secra:plugin:order_service:order:2024:001`
23///
24/// ## 使用示例
25///
26/// ### 基座系统
27///
28/// ```rust
29/// // 1. 创建 MemoryManager
30/// let memory_manager = MemoryManager::new_with_defaults();
31///
32/// // 2. 为插件创建 Cache 实例
33/// let plugin_cache = memory_manager.create_plugin_cache("user_plugin".to_string());
34/// ```
35///
36/// ### 插件代码
37///
38/// ```rust
39/// // 1. 设置缓存
40/// #[derive(Serialize, Deserialize)]
41/// struct User { id: u64, name: String }
42///
43/// let user = User { id: 123, name: "Alice".to_string() };
44/// cache.set("user:123", &user, None).await?;
45///
46/// // 2. 获取缓存
47/// let user: Option<User> = cache.get("user:123").await?;
48///
49/// // 3. 删除缓存
50/// cache.delete("user:123").await?;
51///
52/// // 4. 清理所有缓存
53/// cache.clear().await?;
54///
55/// // 5. 按模块清理缓存
56/// cache.clear_module("user").await?; // 清理 user 模块的所有缓存
57/// ```
58mod cache;
59mod config;
60mod error;
61mod manager;
62mod plugin;
63
64// 公开导出
65pub use cache::Cache;
66pub use config::MemoryConfig;
67pub use error::CacheError;
68pub use error::CacheError as MemoryError; // 为了兼容性,也导出为 MemoryError
69pub use manager::MemoryManager;
70pub use plugin::PluginMemoryCache;
71