CacheFacade.md
... ...
@@ -0,0 +1,135 @@
1
+# 缓存门面类 `CacheFacade` 使用说明
2
+`CacheFacade` 是对底层 `RedissonCache` 缓存操作类的封装,提供了统一的缓存操作接口,简化了缓存的读写、集合操作、哈希操作、锁机制等功能的调用。
3
+
4
+## 类路径
5
+```plain
6
+java
7
+
8
+
9
+复制编辑
10
+package com.sie.snest.engine.facade;
11
+```
12
+
13
+---
14
+
15
+## 主要功能
16
+### 基础缓存操作
17
+| 方法 | 描述 |
18
+| --- | --- |
19
+| `getObj(String key)` | 获取指定 `key`<br/> 的缓存对象。 |
20
+| `getString(String key)` | 获取指定 `key`<br/> 的字符串类型缓存值。 |
21
+| `setString(String key, String value, Long expired)` | 设置字符串类型缓存值,支持过期时间(单位:秒)。 |
22
+| `setStringIfAbsent(String key, String value, Long expired)` | 若 `key`<br/> 不存在,则设置值并返回 `true`<br/>,否则返回 `false`<br/>。 |
23
+| `put(String key, T value, Long expired)` | 通用方式设置缓存对象,并设置过期时间。 |
24
+| `remove(String key)` | 删除指定 `key`<br/> 的缓存内容。 |
25
+| `expire(String key, Long expired)` | 更新缓存的过期时间。 |
26
+| `exists(String key)` | 判断缓存是否存在。 |
27
+
28
+
29
+---
30
+
31
+### 列表操作(List)
32
+| 方法 | 描述 |
33
+| --- | --- |
34
+| `getList(String key)` | 获取缓存中存储的 `List`<br/>。 |
35
+| `addList(String key, List value, Long expired)` | 向缓存中添加一个 `List`<br/>。 |
36
+| `removeList(String key, List value)` | 从缓存 `List`<br/> 中移除指定元素。 |
37
+| `deleteList(String key)` | 删除整个 `List`<br/>。 |
38
+
39
+
40
+---
41
+
42
+### 哈希表操作(Hash)
43
+| 方法 | 描述 |
44
+| --- | --- |
45
+| `hGet(String key, String field)` | 获取哈希表中指定字段的值。 |
46
+| `hMGet(String key, Set<String> field)` | 获取哈希表中多个字段的值。 |
47
+| `hGetAll(String key)` | 获取整个哈希表的字段和值。 |
48
+| `hSet(String key, String field, String value, Long expired)` | 设置哈希表中指定字段的值。 |
49
+| `hSetAll(String key, Map<String, String> value, Long expired)` | 设置哈希表多个字段值。 |
50
+| `hSetIfAbsent(String key, String field, String value, Long expired)` | 字段不存在时设置值。 |
51
+| `hDel(String key, String field)` | 删除哈希表中指定字段。 |
52
+| `hDelKeys(String key, String[] fields)` | 删除哈希表中多个字段。 |
53
+| `hLen(String key)` | 获取哈希表的字段数量。 |
54
+| `hKeys(String key)` | 获取所有字段名。 |
55
+
56
+
57
+---
58
+
59
+### 集合操作(Set)
60
+| 方法 | 描述 |
61
+| --- | --- |
62
+| `sExists(String key)` | 判断集合是否存在。 |
63
+| `sIsMember(String key, String field)` | 判断元素是否是集合成员。 |
64
+| `sAdd(String key, String field, Long expired)` | 向集合中添加一个元素。 |
65
+| `sAddAll(String key, Collection<String> field, Long expired)` | 添加多个元素。 |
66
+| `sRemove(String key, String field)` | 移除集合中指定元素。 |
67
+| `sCard(String key)` | 获取集合中元素数量。 |
68
+| `sMembers(String key)` | 获取集合中所有成员。 |
69
+
70
+
71
+---
72
+
73
+### 模糊删除与扫描
74
+| 方法 | 描述 |
75
+| --- | --- |
76
+| `scanKeys(String key)` | 扫描匹配的 key 集合。 |
77
+| `deleteByPattern(String key)` | 删除所有匹配 `pattern`<br/> 的 key。 |
78
+
79
+
80
+---
81
+
82
+### 分布式锁操作
83
+| 方法 | 描述 |
84
+| --- | --- |
85
+| `lock(String key)` | 加锁,无超时限制。 |
86
+| `lock(String key, Long timeout)` | 加锁,超时时间单位秒。 |
87
+| `tryLock(String key, Long waitTime, Long leaseTime)` | 尝试加锁,支持等待时间和持有时间。 |
88
+| `unlock(String key)` | 解锁。 |
89
+
90
+
91
+---
92
+
93
+## 典型使用场景
94
+### 缓存配置数据
95
+```plain
96
+java
97
+
98
+
99
+复制编辑
100
+String config = CacheFacade.getString("system:config");
101
+if (config == null) {
102
+ config = loadConfig();
103
+ CacheFacade.setString("system:config", config, 3600L);
104
+}
105
+```
106
+
107
+---
108
+
109
+### 控制接口幂等性
110
+```plain
111
+java
112
+
113
+
114
+复制编辑
115
+if (!CacheFacade.setStringIfAbsent("request:lock:" + requestId, "1", 10L)) {
116
+ throw new RuntimeException("重复请求");
117
+}
118
+```
119
+
120
+---
121
+
122
+### 分布式锁示例
123
+```plain
124
+java
125
+
126
+
127
+复制编辑
128
+try {
129
+ CacheFacade.lock("job:run", 30L);
130
+ runJob();
131
+} finally {
132
+ CacheFacade.unlock("job:run");
133
+}
134
+```
135
+