Jedis是Redis官方推荐的Java连接开发工具。要在Java开发中使用好Redis中间件,必须对Jedis熟悉才能写成漂亮的代码!
1、新建Maven工程,导入对应依赖
<dependencies><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.2.0</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency></dependencies>
2、编码测试
- 连接数据库
- 操作命令
- 断开连接
package com.lizh.test;import redis.clients.jedis.Jedis;public class TestPing {public static void main(String[] args) {//1、 new 一个 Jedis 对象Jedis jedis = new Jedis("127.0.0.1",6379);//2、输入密码jedis.auth("123456");//3、测试连接System.out.println(jedis.ping());//4、关闭连接jedis.close();}
}
输出 : PONG
3、对Key操作的命令
package com.lizh.test;import redis.clients.jedis.Jedis;@Test public void testKey() throws InterruptedException{System.out.println("清空数据:"+jedis.flushDB());System.out.println("判断某个键是否存在:"+jedis.exists("username"));System.out.println("新增<'username','zzh'>的键值对:"+jedis.set("username", "zzh"));System.out.println(jedis.exists("name"));System.out.println("新增<'password','password'>的键值对:"+jedis.set("password", "password"));System.out.print("系统中所有的键如下:");Set<String> keys = jedis.keys("*");System.out.println(keys);System.out.println("删除键password:"+jedis.del("password"));System.out.println("判断键password是否存在:"+jedis.exists("password"));System.out.println("设置键username的过期时间为5s:"+jedis.expire("username", 5));TimeUnit.SECONDS.sleep(2);System.out.println("查看键username的剩余生存时间:"+jedis.ttl("username"));System.out.println("移除键username的生存时间:"+jedis.persist("username"));System.out.println("查看键username的剩余生存时间:"+jedis.ttl("username"));System.out.println("查看键username所存储的值的类型:"+jedis.type("username"));}
输出结果
清空数据:OK
判断某个键是否存在:false
新增<'username','zzh'>的键值对:OK
false
新增<'password','password'>的键值对:OK
系统中所有的键如下:[username, password]
删除键password:1
判断键password是否存在:false
设置键username的过期时间为5s:1
查看键username的剩余生存时间:3
移除键username的生存时间:1
查看键username的剩余生存时间:-1
查看键username所存储的值的类型:string
4、通过Jedis理解Redis事务
package com.lizh.test;import com.alibaba.fastjson.JSONObject;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;public class TestPing {public static void main(String[] args) {//1、 new 一个 Jedis 对象Jedis jedis = new Jedis("127.0.0.1",6379);//2、输入密码jedis.auth("123456");//3、开启事务Transaction multi = jedis.multi();JSONObject jsonObject = new JSONObject();jsonObject.put("k1","v1");jsonObject.put("k2","v2");String result = jsonObject.toJSONString();multi.set("k1",result);try {multi.set("s1","v1");multi.set("s2","v2");int i = 1/0; //代码执行异常,事务抛出失败multi.exec(); //执行事务} catch (Exception e){multi.discard(); //移除事务e.printStackTrace();}finally {System.out.println(jedis.get("s1"));System.out.println(jedis.get("s2"));jedis.close(); //关闭连接}}}
5、小结
Jedis中jedis对象的方法是与Redis的命令一一对应的。