xiangpei
2025-04-18 ccadf9480d4e6a9dcc227a2a0b1f9ae0612e36fd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
package com.monkeylessey.framework.utils;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
 
import java.util.List;
import java.util.concurrent.TimeUnit;
 
/**
 * @author 29443
 * @date 2022/4/16
 */
@Component
public class RedisUtil {
 
    @Autowired
    private RedisTemplate redisTemplate;
 
    /**
     * 保存hash类型
     *
     * @param key
     * @param hashKey
     * @param value
     */
    public void saveForHash(String key, Object hashKey, Object value) {
        redisTemplate.opsForHash().put(key, hashKey, value);
    }
 
    /**
     * 保存普通value类型
     *
     * @param key
     * @param value
     */
    public void saveForValue(String key, Object value) {
        redisTemplate.opsForValue().set(key, value);
    }
 
    /**
     * 保存普通value类型,并设置过期时间
     *
     * @param key
     * @param value
     * @param time
     * @param unit
     */
    public void saveForValueWithExpire(String key, Object value, Long time, TimeUnit unit) {
        redisTemplate.opsForValue().set(key, value, time, unit);
    }
 
    /**
     * 保存list
     *
     * @param key
     * @param list
     * @param <T>
     * @return
     */
    public <T> Long saveForList(String key, List<T> list) {
        Long num = redisTemplate.opsForList().rightPushAll(key, list);
        return num == null ? 0 : num;
    }
 
    /**
     * 设置过期时间
     *
     * @param key
     * @param time
     * @param timeUnit
     * @return
     */
    public boolean setExpire(String key, Long time, TimeUnit timeUnit) {
        return redisTemplate.expire(key, time, timeUnit);
    }
 
    /**
     * 返回过期时间
     *
     * @param key
     * @return
     */
    public long getExpire(String key) {
        return redisTemplate.getExpire(key);
    }
 
 
    /**
     * 获取hashkey的值
     *
     * @param key
     * @param hashKey
     * @param type
     * @param <T>
     * @return
     */
    public <T> T getHashValue(String key, String hashKey, Class<T> type) {
        try {
            T value = (T) redisTemplate.opsForHash().get(key, hashKey);
            return value;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
 
    /**
     * 获取普通的value
     *
     * @param key
     * @param <T> 如果存入类型为复杂的泛型,比如List<String>,Array<String> 传参时需要传new TypeReference<ArrayList<String>>(){}.getType();
     * @return
     */
    public <T> T getValue(String key, Class<T> result) {
        try {
            return (T) redisTemplate.opsForValue().get(key);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
 
 
    /**
     * 获取list的值
     *
     * @param key
     * @param <T>
     * @return
     */
    public <T> List<T> getList(String key) {
        return redisTemplate.opsForList().range(key, 0, -1);
    }
 
    /**
     * 查询redis中是否有某个key
     *
     * @param key
     * @return
     */
    public boolean hasKey(String key) {
        return redisTemplate.hasKey(key);
    }
 
    /**
     * 查询redis中hash类型中是否有某个key
     *
     * @param key
     * @param hashKey
     * @return
     */
    public boolean hasHashKey(String key, Object hashKey) {
        return redisTemplate.opsForHash().hasKey(key, hashKey);
    }
 
    /**
     * 刪除key
     *
     * @param key
     * @return
     */
    public boolean deleteKey(String key) {
        return redisTemplate.delete(key);
    }
}