一、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工具类

 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);
}
}

Redis(五)-- Java API的更多相关文章

  1. Java API 操作Redis

    针对Redis的Java客户端有很多种,具体查看官网信息:https://redis.io/clients#java 本次测试使用Jedis API,Jedis使用方便,其api方法名称与redis命 ...

  2. 最全的Java操作Redis的工具类,使用StringRedisTemplate实现,封装了对Redis五种基本类型的各种操作!

    转载自:https://github.com/whvcse/RedisUtil 代码 ProtoStuffSerializerUtil.java import java.io.ByteArrayInp ...

  3. Hadoop(五):HDFS的JAVA API基本操作

    HDFS的JAVA API操作 HDFS在生产应用中主要是客户端的开发,其核心步骤是从HDFS提供的api中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件. 主 ...

  4. kafka2.9.2的伪分布式集群安装和demo(java api)测试

    目录: 一.什么是kafka? 二.kafka的官方网站在哪里? 三.在哪里下载?需要哪些组件的支持? 四.如何安装? 五.FAQ 六.扩展阅读   一.什么是kafka? kafka是LinkedI ...

  5. ubuntu12.04+kafka2.9.2+zookeeper3.4.5的伪分布式集群安装和demo(java api)测试

    博文作者:迦壹 博客地址:http://idoall.org/home.php?mod=space&uid=1&do=blog&id=547 转载声明:可以转载, 但必须以超链 ...

  6. 20145208 实验五 Java网络编程

    20145208 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...

  7. 20145215实验五 Java网络编程及安全

    20145215实验五 Java网络编程及安全 实验内容 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验步骤 本次实验我的结对编程对象是20145208蔡野,我负责编写客 ...

  8. 20145220 实验五 Java网络编程

    20145220 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...

  9. mybatis Java API

    既然你已经知道如何配置 MyBatis 和创建映射文件,你就已经准备好来提升技能了. MyBatis 的 Java API 就是你收获你所做的努力的地方.正如你即将看到的,和 JDBC 相比, MyB ...

随机推荐

  1. iOS调用其它App,如拨打电话、发送邮件等。UIApplication:openURL:方法是实现这一目的的

    在iOS开发中,经常需要调用其它App,如拨打电话.发送邮件等.UIApplication:openURL:方法是实现这一目的的最简单方法,该方法一般通过提供的url参数的模式来调用不同的App. 通 ...

  2. Springmvc mvc:exclude-mapping不拦截 无效

    最近在使用ssm框架搭建一个后台,需要判断每个请求都判断是否登录,未登录跳转到登录页面, 使用发现 mvc:exclude-mapping 不拦截,发现,怎么都无效,依然是进行拦截.查了很多资料,总算 ...

  3. GIS+=地理信息+行业+大数据——基于云环境流处理平台下的实时交通创新型app

    应用程序已经是近代的一个最重要的IT创新.应用程序是连接用户和数据之间的桥梁,提供即时訪问信息是最方便且呈现的方式也是easy理解的和令人惬意的. 然而,app开发人员.尤其是后端平台能力,一直在努力 ...

  4. 实际应用中的C#加密

    在系统的管理员有着实际的应用,对于一个数据库管理系统来说,数据库安全还是挺重要的,所以在存入到数据库的密码通常都是加密的.即使有着hack攻破数据库后,也不会那样的容易的盗取你的账号和密码,这样可以减 ...

  5. 在WMware新建一个虚拟机

  6. java方法——重载2

    什么是Java方法重载 方法重载的定义 1 对于同一个类,如果这个类里面有两个或者多个重名的方法,但是方法的参数个数.类型.顺序至少有一个不一样,这时候局构成方法重载. END 方法重载示例 1 pu ...

  7. 构建基于分布式SOA架构的统一身份认证体系

    摘要:本文充分利用SOA架构松耦合的特点,通过规范统一网络接口实现业务系统整合,既提升系统安全性,又简化资源访问操作,具有重要的理论和现实意义. 统一身份认证旨在将分散在各个信息系统中的用户和权限资源 ...

  8. 修改Linux内核参数,减少TCP连接中的TIME-WAIT

    一台服务器CPU和内存资源额定有限的情况下,如何提高服务器的性能是作为系统运维的重要工作.要提高Linux系统下的负载能力,当网站发展起来之后,web连接数过多的问题就会日益明显.在节省成本的情况下, ...

  9. loadrunner -56992

    设置Run-time Settings ,network speed ,use bandwidth为 512: 回放脚本没有报错,5个并发运行场景报如下错误: vuser_init.c(12): Er ...

  10. UML总结--总体架构

    架构图(一): 架构图(二): 转自:http://blog.csdn.net/lsh6688/article/details/5931706