一、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. jquery全部版本

    http://www.jb51.net/zt/jquerydown.htm 这个地方实时更新jquery版本

  2. QDialog:输入对话框、颜色对话框、字体对话框、文件对话框

    # _*_ coding:utf-8 _*_ import sys from PyQt4 import QtCore,QtGui class Example(QtGui.QWidget): def _ ...

  3. dp:FZU2030括号问题

    http://acm.fzu.edu.cn/problem.php?pid=2030 给出一个字符串,其中包括3种字符: ‘(‘, ‘)’, ‘?’.其中?表示这个字符可以是’(‘也可以是’)’. 现 ...

  4. pdo_mysql安装

    如果编译时没有编译pdo模块,可以cd 到php编译时的目录,重新编译 1.切换到pdo_mysql目录,如php-5.5.10/ext/pdo_mysql/ 2.生成configure文件,在pdo ...

  5. WP模板

    ContentControl有两个属性: // 摘要: // 获取或设置 System.Windows.Controls.ContentControl 依赖项属性的值. // // 返回结果: // ...

  6. MongoDB学习之(二)java连接

    上一章完了下mongodb的安装和IDE工具,现在开始使用java进行连接. 第一步:使用jar包, 这里需要三个包,具体为啥我也不清楚,反正因为报错,我就按照官方文档一个个的都下载了. 链接:htt ...

  7. CodeIgniter在nginx下404 not found

    server { listen ; server_name test.platform; charset utf8; root /data/www/platform/trunk; location / ...

  8. 【WPF】C#代码动态添加控件的Margin属性

    需求:一组按钮的数据是从服务器中Json数据发过来的,需要根据这个Json数据动态地添加这组按钮. 工具:使用http://www.newtonsoft.com/json来解析Json. 过程:C#代 ...

  9. elasticsearch使用笔记

    安装流程 http://www.elasticsearch.org/overview/elkdownloads/下载对应系统的安装包(我下载的是tar的),下载解压以后运行es根目录下bin目录的el ...

  10. __attribute__((weak, alias())))

    参考gcc的reference: 弱符号: 若两个或两个以上全局符号(函数或变量名)名字一样,而其中之一声明为weak symbol(弱符号),则这些全局符号不会引发重定义错误.链接器会忽略弱符号,去 ...