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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
package com.java110.utils.util;
 
import com.alibaba.fastjson.JSONObject;
import com.java110.utils.log.LoggerEngine;
 
import com.java110.utils.namespace.NameSpaceHandler;
 
import java.util.ArrayList;
import java.util.List;
 
/**
 * 缓存管理类
 * Created by wuxw on 2017/3/2.
 * version:1.0
 */
public class CacheUtil extends LoggerEngine {
 
    public static final String KEY_RESPONSE_MESSAGE_PREFIX = "RESPONSE_MESSAGE_"; // 回复语 key前缀
 
    public static final String KEY_CODE_MAPPING_PREFIX = "CODE_MAPPING_"; // 映射表key前缀
 
    public static final String KEY_OFFER_SPEC_PREFIX = "KEY_OFFER_SPEC_";//销售品规格 key前缀,单个销售品用
 
    public static final String KEY_OFFER_SPEC_PAGE_PREFIX = "KEY_OFFER_SPEC_PAGE_";//销售品规格 key前缀,主要用户存放分页后的数据
 
    public static final String KEY_USER_PREFIX = "KEY_USER_";//用户信息key前缀
 
 
    public static final String IS_START_CUSTOM_CACHE_SYSTEM = "1";//CustomizedPropertyPlaceholderConfigurer.getContextProperty("global.custom_cached_system").toString();
 
    public static final String CUSTOM_CACHE_ON = "ON";//
 
    public static final String CUSTOM_CACHE_OFF = "OFF";
 
    public static int set(String key, Object object) {
        return set(key, JSONObject.toJSONString(object));
    }
 
 
    public static int set(String key, Object object,int expireTime) {
        return set(NameSpaceHandler.getDefaultNamespace(),key, JSONObject.toJSONString(object),expireTime);
    }
 
    public static int set(int namespace,String key, Object object,int expireTime) {
        return set(NameSpaceHandler.getDefaultNamespace(),key, JSONObject.toJSONString(object),expireTime);
    }
 
 
    /**
     * 保存一个字符串至缓存中
     *
     * @param value
     * @return
     */
    public static int set(String key, String value) {
 
        return set(key,value,0);
    }
 
    /**
     * 保存数据(有有效时间)
     * @param key
     * @param value
     * @param expireTime 有效时间
     * @return
     */
    public static int set(int namespace,String key,String value,int expireTime){
 
        return 0;
    }
 
    /**
     * 保存一个List对象至缓存
     *
     * @param key
     * @param values
     * @return
     */
    public static int sets(String key, List<String> values) {
 
        return 0;
    }
 
    /**
     * 客户端调用
     *
     * @param key
     * @param objects
     * @param
     * @param <T>
     * @return
     */
    public static <T> int sets(String key, Object objects) {
        List<T> ts = (List<T>) objects;
        List<String> datas = new ArrayList<String>();
        for (T tmp : ts) {
            datas.add(JSONObject.toJSONString(tmp));
        }
        return sets(key, datas);
    }
 
    /**
     * 从缓存中根据key获取对象 查询对象,对象必须实现序列化接口
     *
     * @param key
     * @param <T>
     * @return
     */
    public static <T> T get(int namespace,String key){
        return get(namespace,key,null);
    }
 
    /**
     * 从缓存中根据key获取对象 查询对象,对象必须实现序列化接口
     *
     * @param key
     * @param <T>
     * @return
     */
    public static <T> T get(int namespace,String key,Class<T> t) {
 
        return null;
    }
 
    /**
     * 从缓存中根据key获取对象 查询对象,对象必须实现序列化接口
     *
     * @param key
     * @param <T>
     * @return
     */
    public static <T> T get(String key) {
        return get(NameSpaceHandler.getDefaultNamespace(),key);
    }
 
    /**
     * 从缓存中根据key获取对象
     * 从缓存中获取数据,默认是List<String>数据
     *
     * @param key
     * @return
     */
    public static List<String> gets(String key) {
 
        return null;
    }
 
    /**
     * 根据指定key 查询数据转为相应对象
     * 主要,在存储数据时 不通对象类型key 不能重复,不然获取时会出现类型转换失败错误
     *
     * @param key
     * @param t
     * @param <T>
     * @return
     */
    public static <T> List<T> gets(String key, Class<T> t) {
 
        List<String> datas = gets(key);
 
        if (datas == null) {
            return null;
        }
 
        List<T> ts = new ArrayList<T>();
 
        for (String data : datas) {
            T t1 = JSONObject.parseObject(data, t);
            ts.add(t1);
        }
 
        return ts;
    }
 
    /**
     * 删除默认namespace 的key
     * @param key
     * @return
     */
    public static int delete(String key){
        return delete(NameSpaceHandler.getDefaultNamespace(),key);
    }
 
    /**
     * 删除制定namespace 的key
     * @param key
     * @return
     */
    public static int delete(int namespace,String key){
 
        return 0;
    }
}