1+ package club .boyuan .official .utils ;
2+
3+ import org .slf4j .Logger ;
4+ import org .slf4j .LoggerFactory ;
5+ import org .springframework .beans .factory .annotation .Autowired ;
6+ import org .springframework .data .redis .core .RedisTemplate ;
7+ import org .springframework .stereotype .Component ;
8+
9+ import java .util .Set ;
10+
11+ /**
12+ * Redis工具类,提供缓存管理功能
13+ */
14+ @ Component
15+ public class RedisUtil {
16+
17+ private static final Logger logger = LoggerFactory .getLogger (RedisUtil .class );
18+
19+ @ Autowired
20+ private RedisTemplate <String , Object > redisTemplate ;
21+
22+ /**
23+ * 清理所有简历字段定义缓存
24+ * 用于解决序列化兼容性问题
25+ */
26+ public void clearFieldDefinitionCache () {
27+ try {
28+ String pattern = "field_definition:*" ;
29+ Set <String > keys = redisTemplate .keys (pattern );
30+
31+ if (keys != null && !keys .isEmpty ()) {
32+ redisTemplate .delete (keys );
33+ logger .info ("成功清理 {} 个字段定义缓存" , keys .size ());
34+ } else {
35+ logger .info ("没有找到需要清理的字段定义缓存" );
36+ }
37+ } catch (Exception e ) {
38+ logger .error ("清理字段定义缓存失败" , e );
39+ }
40+ }
41+
42+ /**
43+ * 清理所有缓存(慎用)
44+ */
45+ public void clearAllCache () {
46+ try {
47+ Set <String > keys = redisTemplate .keys ("*" );
48+ if (keys != null && !keys .isEmpty ()) {
49+ redisTemplate .delete (keys );
50+ logger .info ("成功清理所有缓存,共 {} 个key" , keys .size ());
51+ } else {
52+ logger .info ("没有找到需要清理的缓存" );
53+ }
54+ } catch (Exception e ) {
55+ logger .error ("清理所有缓存失败" , e );
56+ }
57+ }
58+
59+ /**
60+ * 清理特定模式的缓存
61+ * @param pattern 缓存key模式
62+ */
63+ public void clearCacheByPattern (String pattern ) {
64+ try {
65+ Set <String > keys = redisTemplate .keys (pattern );
66+ if (keys != null && !keys .isEmpty ()) {
67+ redisTemplate .delete (keys );
68+ logger .info ("成功清理模式 '{}' 的缓存,共 {} 个key" , pattern , keys .size ());
69+ } else {
70+ logger .info ("没有找到模式 '{}' 的缓存" , pattern );
71+ }
72+ } catch (Exception e ) {
73+ logger .error ("清理模式 '{}' 的缓存失败" , pattern , e );
74+ }
75+ }
76+ }
0 commit comments