Redis(五)-- Java API
<div class="rich_media_content" id="js_content">
<p><img class="rich_pages" src="https://ss.csdn.net/p?https://mmbiz.qpic.cn/mmbiz_gif/du7xBgeM5niahmzJqk9uibZfJiayFyIaVUADwAq5cy4nuLMTYSU0wPhyynTgDPK7xuTiapVIuNicXlaiaaql2XDbR0oA/640?wx_fmt=gif" alt="640?wx_fmt=gif"></p><h4>一、pox.xml<button class="cnblogs-toc-button" title="显示目录导航" aria-expanded="false"></button></h4><pre class="has highlighter-hljs" highlighted="true"><code class="language-javascript highlighter-hljs hljs"><dependencies>
<span class="language-xml"><span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>redis.clients<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>jedis<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">version</span>></span>2.9.0<span class="hljs-tag"></<span class="hljs-name">version</span>></span>
<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span></span>
<span class="language-xml"><span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.apache.commons<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>commons-pool2<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">version</span>></span>2.4.2<span class="hljs-tag"></<span class="hljs-name">version</span>></span>
<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span></span>
<span class="language-xml"><span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>junit<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>junit<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">version</span>></span>4.11<span class="hljs-tag"></<span class="hljs-name">version</span>></span>
<span class="hljs-tag"><<span class="hljs-name">scope</span>></span>test<span class="hljs-tag"></<span class="hljs-name">scope</span>></span>
<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span></span>
</dependencies>
二、Java 代码,Jedis 工具类
package om.xbq.redis;
import java.util.List;
import java.util.Set;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
- Jedis 工具类
- @author xbq
@created:2017-4-19
/
public class JedisUtil {
private JedisPool pool;
private static String URL = "192.168.242.130";
private static int PORT = 6379;
private static String PASSWORD = "xbq123";
// ThreadLocal,给每个线程 都弄一份 自己的资源
private final static ThreadLocal<JedisPool> threadPool = new ThreadLocal<JedisPool>();
private final static ThreadLocal<Jedis> threadJedis = new ThreadLocal<Jedis>();
private final static int MAX_TOTAL = 100; // 最大分配实例
private final static int MAX_IDLE = 50; // 最大空闲数
private final static int MAX_WAIT_MILLIS = -1; // 最大等待数
/*- 获取 jedis 池
- @return
/
public JedisPool getPool(){
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
// 控制一个 pool 可分配多少个 jedis 实例,通过 pool.getResource() 来获取,如果赋值为 -1,则表示不限制;
// 如果 pool 已经分配了 maxActive 个 jedis 实例,则此时 pool 的状态为 exhausted(耗尽)
jedisPoolConfig.setMaxTotal(MAX_TOTAL);
// 控制一个 pool 最多有多少个状态为 idle(空闲的) 的 jedis 实例
jedisPoolConfig.setMaxIdle(MAX_IDLE);
// 表示当 borrow(引入) 一个 jedis 实例时,最大的等待时间,如果超过等待时间,则直接抛出 JedisConnectionException
jedisPoolConfig.setMaxWaitMillis(MAX_WAIT_MILLIS);
final int timeout = 60 * 1000;
pool = new JedisPool(jedisPoolConfig, URL, PORT, timeout);
return pool;
}
/* - 在 jedis 池中 获取 jedis
- @return
/
private Jedis common(){
// 从 threadPool 中取出 jedis 连接池
pool = threadPool.get();
// 为空,则重新产生 jedis 连接池
if(pool == null){
pool = this.getPool();
// 将 jedis 连接池维护到 threadPool 中
threadPool.set(pool);
}
// 在 threadJedis 中获取 jedis 实例
Jedis jedis = threadJedis.get();
// 为空,则在 jedis 连接池中取出一个
if(jedis == null){
jedis = pool.getResource();
// 验证密码
jedis.auth(PASSWORD);
// 将 jedis 实例维护到 threadJedis 中
threadJedis.set(jedis);
}
return jedis;
}
/* - 释放资源
/
public void closeAll(){
Jedis jedis = threadJedis.get();
if(jedis != null){
threadJedis.set(null);
JedisPool pool = threadPool.get();
if(pool != null){
// 释放连接,归还给连接池
pool.returnResource(jedis);
}
}
}
/* - 判断 key 是否存在
- @param key
- @return
/
public boolean existsKey(String key){
Jedis jedis = this.common();
return jedis.exists(key);
}
/* - 删除
- @param key
- @return
/
public Long delValue(String key){
Jedis jedis = this.common();
return jedis.del(key);
}
// ---------------------------- 对 String 类型的操作 -----------------------------------------
/* - 增加 修改
- @param key
- @param value
/
public String setValue(String key, String value) {
Jedis jedis = this.common();
return jedis.set(key, value);
}
/* - 查询
- @param key
- @return
/
public String getValue(String key){
Jedis jedis = this.common();
return jedis.get(key);
}
/* - 追加数据
- @param key
- @param value
/
public void appendValue(String key, String value){
Jedis jedis = this.common();
jedis.append(key, value);
}
/* - 测试 String
/
@Test
public void testString(){
if(this.existsKey("name")){
System.out.println("这一个 key 存在了!");
this.appendValue("name", "xbq6666");
String name = this.getValue("name");
System.out.println("name===" + name);
long flag = this.delValue("name");
System.out.println(flag);
}else {
this.setValue("name", "javaCoder");
String name = this.getValue("name");
System.out.println("name===" + name);
}
}
// ---------------------------- 对 List 类型的操作 ------------------------------------------
/* - 保存到链表
- @param key
- @param keys
- @return
/
public long lpush(String key, String ...keys){
Jedis jedis = this.common();
return jedis.lpush(key, keys);
}
/* - 取出链表中的全部元素
- @param key
- @return
/
public List<String> lrange(String key) {
Jedis jedis = this.common();
return jedis.lrange(key, 0, -1);
}
/* - 查询出链表中的元素个数
- @param key
- @return
/
public long llen(String key){
Jedis jedis = this.common();
return jedis.llen(key);
}
/* - 取出链表中的头部元素
- @param key
- @return
/
public String lpop(String key){
Jedis jedis = this.common();
return jedis.lpop(key);
}
// ---------------------------- 对 Hash 类型的操作 ------------------------------------------
/* - 添加
- @param key
- @param field
- @param value
- @return
/
public long hset(String key, String field, String value) {
Jedis jedis = this.common();
return jedis.hset(key, field, value);
}
/* - 查询
- @param key
- @param field
- @return
/
public String hget(String key, String field){
Jedis jedis = this.common();
return jedis.hget(key, field);
}
/* - 判断 key 中的 field 是否存在
- @param key
- @param field
- @return
/
public boolean hexists(String key, String field){
Jedis jedis = this.common();
return jedis.hexists(key, field);
}
/* - 删除
- @param key
- @param fields
- @return
/
public long hdel(String key, String ...fields){
Jedis jedis = this.common();
return jedis.hdel(key, fields);
}
// ---------------------------- 对 Set 类型的操作 --------------------------------------------
/* - 添加元素
- @param key
- @param members
- @return
/
public long sadd(String key, String ...members){
Jedis jedis = this.common();
return jedis.sadd(key, members);
}
/* - 查询出 set 中的所有元素
- @param key
- @return
/
public Set<String> sMember(String key){
Jedis jedis = this.common();
return jedis.smembers(key);
}
/* - 查询出 set 中元素的个数
- @param key
- @return
/
public long scard(String key){
Jedis jedis = this.common();
return jedis.scard(key);
}
// ---------------------------- 对 ZSet 类型的操作 --------------------------------------------
/* - 在 zset 中添加元素
- @param key
- @param score
- @param member
- @return
/
public long zadd(String key, double score ,String member){
Jedis jedis = this.common();
return jedis.zadd(key, score, member);
}
/* - 查询所有元素
- @param key
- @return
/
public Set<String> zrange(String key){
Jedis jedis = this.common();
return jedis.zrange(key, 0, -1);
}
/* - 查询 zset 中的元素个数
- @param key
- @return
/
public long zcard(String key){
Jedis jedis = this.common();
return jedis.zcard(key);
}
/* - 删除 zset 中的一个 或者多个元素
- @param key
- @param members
@return
*/
public long zrem(String key, String ...members){
Jedis jedis = this.common();
return jedis.zrem(key, members);
}
}