Redis(五)-- Java API
一、pox.xml
<dependencies> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.4.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies>
二、Java 代码,Jedis 工具类
1 package om.xbq.redis; 2 3 import java.util.List; 4 import java.util.Set; 5 import org.junit.Test; 6 import redis.clients.jedis.Jedis; 7 import redis.clients.jedis.JedisPool; 8 import redis.clients.jedis.JedisPoolConfig; 9 /** 10 * Jedis 工具类 11 * @author xbq 12 * @created:2017-4-19 13 */ 14 public class JedisUtil { 15 16 private JedisPool pool; 17 private static String URL = "192.168.242.130"; 18 private static int PORT = 6379; 19 private static String PASSWORD = "xbq123"; 20 21 // ThreadLocal,给每个线程 都弄一份 自己的资源 22 private final static ThreadLocal<JedisPool> threadPool = new ThreadLocal<JedisPool>(); 23 private final static ThreadLocal<Jedis> threadJedis = new ThreadLocal<Jedis>(); 24 25 private final static int MAX_TOTAL = 100; // 最大分配实例 26 private final static int MAX_IDLE = 50; // 最大空闲数 27 private final static int MAX_WAIT_MILLIS = -1; // 最大等待数 28 29 /** 30 * 获取 jedis 池 31 * @return 32 */ 33 public JedisPool getPool(){ 34 JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); 35 // 控制一个 pool 可分配多少个 jedis 实例,通过 pool.getResource() 来获取,如果赋值为 -1,则表示不限制; 36 // 如果 pool 已经分配了 maxActive 个 jedis 实例,则此时 pool 的状态为 exhausted(耗尽) 37 jedisPoolConfig.setMaxTotal(MAX_TOTAL); 38 // 控制一个 pool 最多有多少个状态为 idle(空闲的) 的 jedis 实例 39 jedisPoolConfig.setMaxIdle(MAX_IDLE); 40 // 表示当 borrow(引入) 一个 jedis 实例时,最大的等待时间,如果超过等待时间,则直接抛出 JedisConnectionException 41 jedisPoolConfig.setMaxWaitMillis(MAX_WAIT_MILLIS); 42 43 final int timeout = 60 * 1000; 44 pool = new JedisPool(jedisPoolConfig, URL, PORT, timeout); 45 46 return pool; 47 } 48 49 /** 50 * 在 jedis 池中 获取 jedis 51 * @return 52 */ 53 private Jedis common(){ 54 // 从 threadPool 中取出 jedis 连接池 55 pool = threadPool.get(); 56 // 为空,则重新产生 jedis 连接池 57 if(pool == null){ 58 pool = this.getPool(); 59 // 将 jedis 连接池维护到 threadPool 中 60 threadPool.set(pool); 61 } 62 // 在 threadJedis 中获取 jedis 实例 63 Jedis jedis = threadJedis.get(); 64 // 为空,则在 jedis 连接池中取出一个 65 if(jedis == null){ 66 jedis = pool.getResource(); 67 // 验证密码 68 jedis.auth(PASSWORD); 69 // 将 jedis 实例维护到 threadJedis 中 70 threadJedis.set(jedis); 71 } 72 return jedis; 73 } 74 75 /** 76 * 释放资源 77 */ 78 public void closeAll(){ 79 Jedis jedis = threadJedis.get(); 80 if(jedis != null){ 81 threadJedis.set(null); 82 JedisPool pool = threadPool.get(); 83 if(pool != null){ 84 // 释放连接,归还给连接池 85 pool.returnResource(jedis); 86 } 87 } 88 } 89 90 /** 91 * 判断 key 是否存在 92 * @param key 93 * @return 94 */ 95 public boolean existsKey(String key){ 96 Jedis jedis = this.common(); 97 return jedis.exists(key); 98 } 99 100 /** 101 * 删除 102 * @param key 103 * @return 104 */ 105 public Long delValue(String key){ 106 Jedis jedis = this.common(); 107 return jedis.del(key); 108 } 109 110 // ---------------------------- 对 String 类型的操作 ----------------------------------------- 111 /** 112 * 增加 修改 113 * @param key 114 * @param value 115 */ 116 public String setValue(String key, String value) { 117 Jedis jedis = this.common(); 118 return jedis.set(key, value); 119 } 120 121 /** 122 * 查询 123 * @param key 124 * @return 125 */ 126 public String getValue(String key){ 127 Jedis jedis = this.common(); 128 return jedis.get(key); 129 } 130 131 /** 132 * 追加数据 133 * @param key 134 * @param value 135 */ 136 public void appendValue(String key, String value){ 137 Jedis jedis = this.common(); 138 jedis.append(key, value); 139 } 140 141 /** 142 * 测试 String 143 */ 144 @Test 145 public void testString(){ 146 if(this.existsKey("name")){ 147 System.out.println("这一个 key 存在了!"); 148 this.appendValue("name", "xbq6666"); 149 150 String name = this.getValue("name"); 151 System.out.println("name===" + name); 152 153 long flag = this.delValue("name"); 154 System.out.println(flag); 155 156 }else { 157 this.setValue("name", "javaCoder"); 158 String name = this.getValue("name"); 159 System.out.println("name===" + name); 160 } 161 } 162 163 // ---------------------------- 对 List 类型的操作 ------------------------------------------ 164 /** 165 * 保存到链表 166 * @param key 167 * @param keys 168 * @return 169 */ 170 public long lpush(String key, String ...keys){ 171 Jedis jedis = this.common(); 172 return jedis.lpush(key, keys); 173 } 174 175 /** 176 * 取出链表中的全部元素 177 * @param key 178 * @return 179 */ 180 public List<String> lrange(String key) { 181 Jedis jedis = this.common(); 182 return jedis.lrange(key, 0, -1); 183 } 184 185 /** 186 * 查询出链表中的元素个数 187 * @param key 188 * @return 189 */ 190 public long llen(String key){ 191 Jedis jedis = this.common(); 192 return jedis.llen(key); 193 } 194 195 /** 196 * 取出链表中的头部元素 197 * @param key 198 * @return 199 */ 200 public String lpop(String key){ 201 Jedis jedis = this.common(); 202 return jedis.lpop(key); 203 } 204 205 // ---------------------------- 对 Hash 类型的操作 ------------------------------------------ 206 /** 207 * 添加 208 * @param key 209 * @param field 210 * @param value 211 * @return 212 */ 213 public long hset(String key, String field, String value) { 214 Jedis jedis = this.common(); 215 return jedis.hset(key, field, value); 216 } 217 218 /** 219 * 查询 220 * @param key 221 * @param field 222 * @return 223 */ 224 public String hget(String key, String field){ 225 Jedis jedis = this.common(); 226 return jedis.hget(key, field); 227 } 228 229 /** 230 * 判断 key 中的 field 是否存在 231 * @param key 232 * @param field 233 * @return 234 */ 235 public boolean hexists(String key, String field){ 236 Jedis jedis = this.common(); 237 return jedis.hexists(key, field); 238 } 239 240 /** 241 * 删除 242 * @param key 243 * @param fields 244 * @return 245 */ 246 public long hdel(String key, String ...fields){ 247 Jedis jedis = this.common(); 248 return jedis.hdel(key, fields); 249 } 250 251 // ---------------------------- 对 Set 类型的操作 -------------------------------------------- 252 /** 253 * 添加元素 254 * @param key 255 * @param members 256 * @return 257 */ 258 public long sadd(String key, String ...members){ 259 Jedis jedis = this.common(); 260 return jedis.sadd(key, members); 261 } 262 263 /** 264 * 查询出 set 中的所有元素 265 * @param key 266 * @return 267 */ 268 public Set<String> sMember(String key){ 269 Jedis jedis = this.common(); 270 return jedis.smembers(key); 271 } 272 273 /** 274 * 查询出 set 中元素的个数 275 * @param key 276 * @return 277 */ 278 public long scard(String key){ 279 Jedis jedis = this.common(); 280 return jedis.scard(key); 281 } 282 283 // ---------------------------- 对 ZSet 类型的操作 -------------------------------------------- 284 /** 285 * 在 zset 中添加元素 286 * @param key 287 * @param score 288 * @param member 289 * @return 290 */ 291 public long zadd(String key, double score ,String member){ 292 Jedis jedis = this.common(); 293 return jedis.zadd(key, score, member); 294 } 295 296 /** 297 * 查询所有元素 298 * @param key 299 * @return 300 */ 301 public Set<String> zrange(String key){ 302 Jedis jedis = this.common(); 303 return jedis.zrange(key, 0, -1); 304 } 305 306 /** 307 * 查询 zset 中的元素个数 308 * @param key 309 * @return 310 */ 311 public long zcard(String key){ 312 Jedis jedis = this.common(); 313 return jedis.zcard(key); 314 } 315 316 /** 317 * 删除 zset 中的一个 或者多个元素 318 * @param key 319 * @param members 320 * @return 321 */ 322 public long zrem(String key, String ...members){ 323 Jedis jedis = this.common(); 324 return jedis.zrem(key, members); 325 } 326 }
感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接。