上一篇总结我们使用我们本地的Eclipse中创建的jedis工程,链接
到了我们处于VMware虚拟机上的Linux系统上的Redis服务,我们接下来
讲一下jedis的一些常用的API。

(1)jedis存储字符串

 package cn.com.redis;  

 import redis.clients.jedis.Jedis;  

 public class Test1 {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.248.129",6379); //添加数据
jedis.set("username", "jack");//向key-->name中放入了value-->jack System.out.println(jedis.get("username"));//执行结果:jack jedis.append("username"," is a Coder");//拼接
System.out.println(jedis.get("username")); jedis.del("username");//删除某个键
System.out.println(jedis.get("username"));//为null
//设置多个键值对
jedis.mset("username","liuling","age","23","qq","412345678");
jedis.incr("age");//进行加1操作
System.out.println(jedis.get("name")+"-"+jedis.get("age")+"-"+jedis.get("qq"));
}
}

效果:

查看一下redis:

说明我们的操作是成功的。

(2)jedis操作Map

 package cn.com.redis;  

 import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map; import redis.clients.jedis.Jedis; public class Test2 {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.248.129",6379); //添加数据
Map<String,String> map = new HashMap<String,String>();
map.put("name", "ZhangSan");
map.put("age", "35");
map.put("email", "12345678@126.com");
jedis.hmset("user",map);
//第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,
//后面的key可以跟多个,是可变参数 List<String> rsmap = jedis.hmget("user", "name","age","email");
System.out.println(rsmap); //删除map中的某个值
jedis.hdel("user","age");
System.out.println(jedis.hmget("user", "age"));//因为删除了,所以返回的是null
System.out.println(jedis.hlen("user"));//返回key为user的键中存放值的个数2
System.out.println(jedis.exists("user"));//是否存在key为user的记录,返回true
System.out.println(jedis.hkeys("user"));//返回map对象中的所有key
System.out.println(jedis.hvals("user"));//返回map对象中的所有val Iterator<String> iter=jedis.hkeys("user").iterator();//得到iterator对象进行遍历
while(iter.hasNext()){
String key = iter.next();
System.out.println(key+":"+jedis.hmget("user", key));
}
}
}

效果:

查看一下redis:

说明我们的操作是成功的。

(3)jedis操作List

 package cn.com.redis;  

 import redis.clients.jedis.Jedis;  

 public class Test3 {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.248.129",6379); //开始前,先移出所有的内容
jedis.del("java framework");
System.out.println(jedis.lrange("java framework", 0, -1)); //先向key java framework中存放三条数据
//lpush key string 在key对应list的头部添加字符串元素
jedis.lpush("java framework","spring");
jedis.lpush("java framework","struts");
jedis.lpush("java framework","hibernate"); //取出所有数据,jedis.lrange是按范围取出,
//第一个是key,第二个是起始位置,第三个是结束位置,-1表示取得所有
System.out.println(jedis.lrange("java framework", 0, -1)); //jedis.llen获取长度
System.out.println(jedis.llen("java framework")); //删除数据
jedis.del("java framework"); //rpush key string 在key对应list的尾部添加字符串元素
//插入数据的时候如果List不存在,就创建它再插入
jedis.rpush("java framework", "spring");
jedis.rpush("java framework", "struts");
jedis.rpush("java framework", "hibernate");
System.out.println(jedis.lrange("java framework", 0, -1)); }
}

效果:

查看以下redis:

说明我们的操作是成功的。

(4)jedis操作Set

效果:

查看以下redis:

说明我们的操作是成功的。

(5)jedis排序

 package cn.com.redis;  

 import redis.clients.jedis.Jedis;  

 public class Test5 {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.248.129",6379); //jedis排序
//注意,此处的rpush和lpush是List的操作,是一个双向链表
//rpush是从尾部加入数据,lpush是从头部加入数据 jedis.del("a");//先清楚数据,再加入数据进行测试
jedis.rpush("a", "1");
jedis.rpush("a", "6");
jedis.rpush("a", "3");
jedis.rpush("a", "9");
System.out.println(jedis.lrange("a", 0, -1));//[1,6,3,9]
System.out.println(jedis.sort("a"));//[1,3,6,9] 输出排序后结果 jedis.del("a");//先清楚数据,再加入数据进行测试
jedis.lpush("a", "1");
jedis.lpush("a", "6");
jedis.lpush("a", "3");
jedis.lpush("a", "9");
System.out.println(jedis.lrange("a", 0, -1));//[9,3,6,1]
System.out.println(jedis.sort("a"));//[1,3,6,9] 输出排序后结果 }
}
 

效果:

查看以下redis:

说明我们的操作是成功的。

(6)Redis连接池

我们每一次使用redis的时候,都要写Jedis jedis = new Jedis("192.168.248.129",6379);
我们要优化连接,不能使用一次就new一个连接对象,我们要创建一个工具类,管理redis的
连接和一些配置参数的设置。

 package cn.com.redis;  

 import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; public class RedisUtil {
//redis服务器IP
private static String ADDR = "192.168.248.129"; //redis的端口号
private static int PORT = 6379; //访问密码
private static String AUTH = "root"; //可用连接实例的最大数目,默认为8
//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此
//时pool的状态为exhausted(耗尽)。
private static int MAX_ACTIVE = 1024; //控制一个pool最多有多少个状态为idle(空闲)的jedis实例,默认也是8
private static int MAX_IDLE = 200; //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。
//如果超过等待时间,则直接抛出JedisConnectionException
private static int MAX_WAIT = 10000; private static int TIMEOUT = 10000; //在borrow一个redis实例时,是否提前进行validate操作;
//如果为true,则得到的jedis实例均是可用的
private static boolean TEST_ON_BORROW = true; private static JedisPool jedisPool = null; /**
* 初始化Redis连接池
* Jedis的连接池配置需要用到org.apache.commons.pool.impl.GenericObjectPool.Config.class
* 所以要引入commons-pool.jar
* */
static{
try {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(MAX_ACTIVE);//老版本是setMaxActive
config.setMaxIdle(MAX_IDLE);
config.setMaxWaitMillis(MAX_WAIT);//老版本是maxMaxWait
config.setTestOnBorrow(TEST_ON_BORROW);
jedisPool = new JedisPool(config,ADDR,PORT,TIMEOUT);//有密码的时候传入AUTH } catch (Exception e) {
e.printStackTrace();
}
} /**
* 获取Jedis实例
* */
public synchronized static Jedis getJedis(){
try {
if(jedisPool != null){
Jedis resource = jedisPool.getResource();
return resource;
}else{
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
} /**
* 释放jedis资源
* */
public static void returnResource(final Jedis jedis){
if(jedis != null){
jedisPool.returnResourceObject(jedis);
}
} }

不要忘记引入commons-pool.jar:

测试:

结果:

使用连接池获取jedis对象会更符合开发规范。
智能转账:http://blog.csdn.net/acmman/article/details/53487684

12.Java连接Redis_Jedis_常用API的更多相关文章

  1. Java时间操作常用api

    - 如何取得年月日.小时分钟秒?- 如何取得从1970年1月1日0时0分0秒到现在的毫秒数?- 如何取得某月的最后一天?- 如何格式化日期?答:问题1:创建java.util.Calendar 实例, ...

  2. HDFS连接JAVA,HDFS常用API

    先在pom.xml中导入依赖包 <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.hadoop/ha ...

  3. java基础(15):常用API(Object、String、StringBuffer)

    1. Java的API及Object类 在以前的学习过程中,我们都在学习对象基本特征.对象的使用以及对象的关系.接下来我们开始使用对象做事情,那么在使用对象做事情之前,我们要学习一些API中提供的常用 ...

  4. 11.Java连接Redis_Jedis_测试联通

    使用Java开发项目的时候使用Redis的话,目前有一些开源API可以使用. 最常用的就是jedis,它提供了许多基于Java的对象和方法来调用Redis的指令. jedis的jar包下载地址http ...

  5. Selenium2(java)selenium常用API 四

    WebElement相关方法 1.点击操作 WebElement button = driver.findElement(By.id("login")); button.click ...

  6. Java学习随笔---常用API(二)

    Object类的toString方法 将一个对象返回为字符串形式,但一般使用的时候会覆盖重写toString方法 Object类是所有类的父亲 // public class Person { pri ...

  7. 13.Java连接Redis_Jedis_事务

    Jedis事务我们使用JDBC连接Mysql的时候,每次执行sql语句之前,都需要开启事务:在MyBatis中,也需要使用openSession()来获取session事务对象,来进行sql执行.查询 ...

  8. Java刷题常用API

    目录 输入输出 快速查看 最大最小值 string stringbuilder 集合 map queue stack set 优先队列 PriorityQueue (Heap) 数组 静态数组 动态数 ...

  9. (5)java中的常用API,其实就是一些常见类的使用

    String方法来介绍 两种声明: 1.String str="1";这种首先检查常量池中是否已经有该常量字符串"1" 如果有的话,不会创建新的常量字符串,若有 ...

随机推荐

  1. Codeforce 1311A Add Odd or Subtract Even

    Add Odd or Subtract Even time limit per test2 seconds memory limit per test256 megabytes inputstanda ...

  2. P1468 派对灯 Party Lamps(BIG 模拟)

    题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄 ...

  3. [NOI 2020 Online] 入门组T1 文具采购(洛谷 P6188)题解

    原题传送门 题目部分:(来自于考试题面,经整理) [题目描述] 小明的班上共有 n 元班费,同学们准备使用班费集体购买 3 种物品: 1.圆规,每个 7 元. 2.笔,每支 4 元. 3.笔记本,每本 ...

  4. P2308 添加括号(dfs记录dp路径)

    传送门 \(一看肯定是区间DP(因为和和合并石子很相似,都要加n-1次)\) \(转移方程为(其中he[i][j]是i到j的和)\) \[dp[i][j]=min(dp[i][j],dp[i][k]+ ...

  5. VSCode最强助攻

    VSCode最强助攻 VS Code是前端界必备的开发工具.页面仔小杨简单介绍几款高效.好用的插件,让原本单薄的VS Code如虎添翼,开发效率倍增. vscode-icons vscode-icon ...

  6. LeetCode--LinkedList--160. Intersection of Two Linked Lists(Easy)

    160. Intersection of Two Linked Lists(Easy) 题目地址https://leetcode.com/problems/intersection-of-two-li ...

  7. Coursera课程笔记----Write Professional Emails in English----Week 4

    Request and Apology Emails(Week 4) How to Write Request Emails Write more POLITELY & SINCERELUY ...

  8. 【Spark】必须要用CDH版本的Spark?那你是不是需要重新编译?

    目录 为什么要重新编译? 步骤 一.下载Spark的源码 二.准备linux环境,安装必须软件 三.解压spark源码,修改配置,准备编译 四.开始编译 为什么要重新编译? 由于我们所有的环境统一使用 ...

  9. 【华为云技术分享】MongoDB经典故障系列五:sharding集群执行sh.stopBalancer()命令被卡住怎么办?

    [摘要] MongoDB sharding集群执行sh.stopBalancer()命令时被卡住怎么办?别慌,华为云数据库来给您支招,收下这份方案指南,让您分分钟远离被自建MongoDB数据库支配的恐 ...

  10. HMM-前向后向算法

    基本要素 状态 \(N\)个 状态序列 \(S = s_1,s_2,...\) 观测序列 \(O=O_1,O_2,...\) \(\lambda(A,B,\pi)\) 状态转移概率 \(A = \{a ...