fbc_starter/cache/
cache_key_modular.rs

1/// 缓存模块常量
2///
3/// 定义各种服务使用的缓存模块名称
4use std::sync::OnceLock;
5
6/// 多个服务都会使用的缓存
7pub const COMMON: &str = "common";
8
9/// 仅基础服务 base 使用的缓存
10pub const BASE: &str = "base";
11
12/// 仅消息服务 msg 使用的缓存
13pub const MSG: &str = "msg";
14
15/// 仅认证服务 oauth 使用的缓存
16pub const OAUTH: &str = "oauth";
17
18/// 聊天方面使用的缓存
19pub const CHAT: &str = "chat";
20
21/// 仅文件服务 file 使用的缓存
22pub const FILE: &str = "file";
23
24/// 仅在线用户服务 presence 使用的缓存
25pub const PRESENCE: &str = "presence";
26
27/// 好友的缓存
28pub const FRIEND: &str = "friend";
29
30/// 视频通话
31pub const VIDEO_CALL: &str = "VideoCall";
32
33/// 仅租户服务 tenant 使用的缓存
34pub const SYSTEM: &str = "system";
35
36/// 仅网关服务 gateway 使用的缓存
37pub const GATEWAY: &str = "gateway";
38
39/// 缓存 key 前缀
40///
41/// 可以在启动时覆盖该参数,系统启动时注入。
42static PREFIX: OnceLock<String> = OnceLock::new();
43
44/// 设置缓存 key 前缀
45///
46/// # 参数
47/// - `prefix`: 要设置的前缀字符串
48///
49/// # 示例
50/// ```
51/// use fbc_starter::cache::set_cache_prefix;
52///
53/// set_cache_prefix("dev".to_string());
54/// ```
55pub fn set_cache_prefix(prefix: String) {
56    let _ = PREFIX.set(prefix);
57}
58
59/// 获取缓存 key 前缀
60///
61/// 如果未设置,返回 `None`
62///
63/// # 示例
64/// ```
65/// use fbc_starter::cache::get_cache_prefix;
66///
67/// if let Some(prefix) = get_cache_prefix() {
68///     println!("当前前缀: {}", prefix);
69/// }
70/// ```
71pub fn get_cache_prefix() -> Option<&'static String> {
72    PREFIX.get()
73}
74
75/// 获取缓存 key 前缀,如果未设置则返回默认值
76///
77/// # 参数
78/// - `default`: 如果未设置前缀时返回的默认值
79///
80/// # 示例
81/// ```
82/// use fbc_starter::cache::get_cache_prefix_or;
83///
84/// let prefix = get_cache_prefix_or("prod".to_string());
85/// ```
86pub fn get_cache_prefix_or(default: String) -> String {
87    PREFIX.get().cloned().unwrap_or(default)
88}