Java的redis 操作类-优化通用版本

java 操作 redis 多节点处理方式;http://blog.itpub.net/29254281/viewspace-1188644/
首先 maven 引入依赖包
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
</dependency>
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
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
/*
***************************************************************
* 公司名称    :牛牛
* 系统名称    :问问系统
* 类 名 称    :RedisHelper
* 功能描述    : redis缓存处理类
* 业务描述    :
* 作 者 名    :@Author Royal
* 开发日期    :2015-11-04 10:24
***************************************************************
* 修改日期    :
* 修 改 者    :
* 修改内容    :
***************************************************************
*/
package zhengxin.core;
 
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.util.*;
 
public class RedisHelper {
 
    //redis数据库连接池
    private static Dictionary<Integer, JedisPool> pools = new Hashtable();
 
    static {
        ResourceBundle bundle = ResourceBundle.getBundle("redis");
        if (bundle == null) {
            throw new IllegalArgumentException(
                    "[redis.properties] is not found!");
        }
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(Integer.valueOf(bundle
                .getString("redis.pool.maxActive")));
        config.setMaxIdle(Integer.valueOf(bundle
                .getString("redis.pool.maxIdle")));
        config.setTestOnBorrow(Boolean.valueOf(bundle
                .getString("redis.pool.testOnBorrow")));
        config.setTestOnReturn(Boolean.valueOf(bundle
                .getString("redis.pool.testOnReturn")));
 
        //循环创建16个redis数据库连接池,存放在字典里面
        for (int i = 0; i < 16; i++) {
            JedisPool item = new JedisPool(config, bundle.getString("redis.ip"),
                    Integer.valueOf(bundle.getString("redis.port")), 0,
                    bundle.getString("redis.password"), i);
            pools.put(i, item);
        }
    }
 
    /**
     * 直接返回redispool 方便灵活操作
     * @param db 数据库序号
     */
    public static JedisPool getRedisPool(Integer db) {
        return pools.get(db);
    }
 
    /**
     * 设置数据
     * @param key     //key
     * @param value   //值
     * @param timeOut //过期时间
     * @param db      //数据库序号
     */
    public static void set(String key, String value, Integer timeOut, Integer db) {
        JedisPool poolItem = pools.get(db);
        Jedis jredis = poolItem.getResource();
        if (timeOut > 0) {
            jredis.expire(key, timeOut);
        }
        jredis.set(key, value);
        poolItem.returnResourceObject(jredis);
    }
 
    /**
     *  获得hash型key某个字段的值
     * @param key     //key
     * @param field   //hash字段
     * @param db      //数据库序号
     * */
    public static String getHashField(String key, String field, Integer db) {
        JedisPool poolItem = pools.get(db);
        Jedis jredis = poolItem.getResource();
        String result = jredis.hget(key, field);
        poolItem.returnResourceObject(jredis);
        return result;
    }
 
    /**
     * 根据hashid获取Map 获得hash型key某个字段的值
     * @param hashId  //key键
     * @param db      //数据库序号
     * */
    public static Map<String, String> getHashValues(String hashId, Integer db) {
        JedisPool poolItem = pools.get(db);
        Jedis jredis = poolItem.getResource();
        Map<String, String> result = jredis.hgetAll(hashId);
        poolItem.returnResourceObject(jredis);
        return result;
    }
 
    /**
     * 设置数据
     * @param key     //key
     * @param value   //值
     * @param field   //hash字段
     * @param db      //数据库序号
     */
    public static void SetHashField(String key, String field, String value, Integer db) {
        JedisPool poolItem = pools.get(db);
        Jedis jredis = poolItem.getResource();
        jredis.hset(key, field, value);
        poolItem.returnResourceObject(jredis);
    }
 
    /**
     * 获取数据
     * @param key     //key
     * @param db      //数据库序号
     */
    public static String get(String key, Integer db) {
        JedisPool poolItem = pools.get(db);
        Jedis jredis = poolItem.getResource();
        String result = jredis.get(key);
        poolItem.returnResourceObject(jredis);
        return result;
    }
 
    /**
     * 删除数据
     * @param key     //key
     * @param db      //数据库序号
     */
    public static void del(String key, Integer db) {
        JedisPool poolItem = pools.get(db);
        Jedis jredis = poolItem.getResource();
        Long result = jredis.del(key);
        poolItem.returnResourceObject(jredis);
    }
 
    /**
     * 队列插入数据
     * @param key     //键
     * @param value   //值
     * @param db      //数据库序号
     */
    public static void lpush(String key, String value, Integer db) {
        JedisPool poolItem = pools.get(db);
        Jedis jredis = poolItem.getResource();
        jredis.lpush(key, value);
        poolItem.returnResourceObject(jredis);
    }
 
    /**
     * 队列取出数据
     * @param key     //键
     * @param db      //数据库序号
     */
    public static String lpop(String key, Integer db) {
        JedisPool poolItem = pools.get(db);
        Jedis jredis = poolItem.getResource();
        String result = jredis.lpop(key);
        poolItem.returnResourceObject(jredis);
        return result;
    }
 
    /**
     * hash 获取键字段
     * @param key     //键
     * @param field   //hash字段
     * @param db      //数据库序号
     */
    public static String hget(String key, String field, Integer db) {
        JedisPool poolItem = pools.get(db);
        Jedis jredis = poolItem.getResource();
        String result = jredis.hget(key, field);
        poolItem.returnResourceObject(jredis);
        return result;
    }
 
    /**
     * hash 删除键字段
     * @param key     //键
     * @param field   //hash字段
     * @param db      //数据库序号
     *
     */
    public static void hdel(String key, String field, Integer db) {
        JedisPool poolItem = pools.get(db);
        Jedis jredis = poolItem.getResource();
        jredis.hdel(key, field);
        poolItem.returnResourceObject(jredis);
    }
 
    /**
     * 获取key下所有的值
     * @param key     //键
     * @param db      //数据库序号
     * @return list
     */
    public static List<String> llist(String key, Integer db) {
        JedisPool poolItem = pools.get(db);
        Jedis jredis = poolItem.getResource();
        List<String> result = jredis.lrange(key, 0, -1);
        poolItem.returnResourceObject(jredis);
        return result;
    }
}