tdm_server_rust/cache/
manga_name_cache.rs1use crate::{app::AppState, entity::manga::MangaSimpleVo};
14
15const TRAN_CACHE_KEY: &str = "manga_tran_names";
17const ORI_CACHE_KEY: &str = "manga_ori_names";
19const VALUE_NS: &str = "manga_names";
21
22pub struct MangaTranNameCache;
24
25pub fn new_manga_tran_name_cache() -> MangaTranNameCache {
29 MangaTranNameCache
30}
31
32pub async fn invalidate_manga_names(state: &AppState) {
36 state.redis.del_value(VALUE_NS, TRAN_CACHE_KEY).await;
37 state.redis.del_value(VALUE_NS, ORI_CACHE_KEY).await;
38}
39
40pub fn cache_key() -> &'static str {
42 TRAN_CACHE_KEY
43}
44
45pub async fn get_manga_tran_names_cached(state: &AppState) -> Option<Vec<MangaSimpleVo>> {
47 state.redis.get_value(VALUE_NS, TRAN_CACHE_KEY).await
48}
49
50pub async fn set_manga_tran_names_cached(state: &AppState, data: &[MangaSimpleVo]) {
52 state
53 .redis
54 .set_value_ttl(VALUE_NS, TRAN_CACHE_KEY, &data, cache_ttl_secs())
55 .await;
56}
57
58pub async fn get_manga_ori_names_cached(state: &AppState) -> Option<Vec<MangaSimpleVo>> {
60 state.redis.get_value(VALUE_NS, ORI_CACHE_KEY).await
61}
62
63pub async fn set_manga_ori_names_cached(state: &AppState, data: &[MangaSimpleVo]) {
65 state
66 .redis
67 .set_value_ttl(VALUE_NS, ORI_CACHE_KEY, &data, cache_ttl_secs())
68 .await;
69}
70
71fn cache_ttl_secs() -> u64 {
73 std::env::var("MANGA_NAME_CACHE_SECS")
74 .ok()
75 .and_then(|v| v.parse().ok())
76 .unwrap_or(60)
77}