Redis随笔(五)Jedis、jedisCluster的使用

https://blog.youkuaiyun.com/djrm11/article/details/83379788

1、Jedis客户端

https://redis.io/clients

2、Jedis源码包与使用介绍

https://github.com/xetorthio/jedis

3、项目中使用

通过maven引入Jedis的依赖包

复制代码


 
 
 
  1. <dependency>
  2. <groupId>redis.clients </groupId>
  3. <artifactId>jedis </artifactId>
  4. <version>2.9.0 </version>
  5. <type>jar </type>
  6. <scope>compile </scope>
  7. </dependency>

复制代码

4、Jedis的使用

创建Jedis对象,set方法存储key-value值,get方法获取key对应的值。主要是用于单个redis。


 
 
 
  1. Jedis jedis = new Jedis("192.168.56.180", 6379);
  2. jedis.set("Jedis", "Hello Work!");
  3. System.out.println(jedis.get("Jedis"));
  4. jedis.close();

 

这里是使用IDEA编辑器对Jedis类结构的一个关系图,从图中看出Jedis继承BinaryJedis,实现多个接口。

每一个接口都代表了一类Redis命令,例如JedisCommands中包含了SET GET等命令,MultiKeyCommands中包含了针对多个Key的MSET MGET等命令。

5、JedisCluster的使用

Jediscluster类图和jedis类图大致一样,不过jedisCluster有一些命令是不可用的。比如BinaryJedisCluster类被作废的命令。主要是用在集群中。

类图:

 

 6、单个reids中API的测试

 


 
 
 
  1. package com.redis;
  2. import org.junit.Test;
  3. import redis.clients.jedis.Jedis;
  4. import redis.clients.jedis.SortingParams;
  5. import java.sql.Timestamp;
  6. import java.text.SimpleDateFormat;
  7. import java.util.*;
  8. import java.util.concurrent.TimeUnit;
  9. /**
  10. * 单机环境Redis操作:一台Redis服务器
  11. */
  12. public class Standalone {
  13. private static Jedis jedis;
  14. static {
  15. jedis = new Jedis("192.168.56.180", 6379);
  16. jedis.auth("123456"); // 之前我在redis配置中配置了权限密码,这里需要设置
  17. }
  18. /**
  19. * 测试key - value 的数据
  20. * @throws InterruptedException
  21. */
  22. @Test
  23. public void testKey() throws InterruptedException {
  24. System.out.println("清空数据:"+jedis.flushDB());
  25. System.out.println("判断某个键是否存在:"+jedis.exists("username"));
  26. System.out.println("新增 <'username','wukong'>的键值对:"+jedis.set("username", "wukong"));
  27. System.out.println("是否存在:"+jedis.exists("name"));
  28. System.out.println("新增 <'password','password'>的键值对:"+jedis.set("password", "password"));
  29. Set <String> keys = jedis.keys("*");
  30. System.out.println("系统中所有的键如下:"+keys);
  31. System.out.println("删除键password:"+jedis.del("password"));
  32. System.out.println("判断键password是否存在:"+jedis.exists("password"));
  33. System.out.println("设置键username的过期时间为5s:"+jedis.expire("username", 5));
  34. TimeUnit.SECONDS.sleep(2);
  35. System.out.println("查看键username的剩余生存时间:"+jedis.ttl("username"));
  36. System.out.println("移除键username的生存时间:"+jedis.persist("username"));
  37. System.out.println("查看键username的剩余生存时间:"+jedis.ttl("username"));
  38. System.out.println("查看键username所存储的值的类型:"+jedis.type("username"));
  39. }
  40. /***
  41. * 字符串操作
  42. * memcached和redis同样有append的操作,但是memcached有prepend的操作,redis中并没有。
  43. * @throws InterruptedException
  44. */
  45. @Test
  46. public void testString() throws InterruptedException {
  47. jedis.flushDB();
  48. System.out.println("===========增加数据===========");
  49. System.out.println(jedis.set("key1","value1"));
  50. System.out.println(jedis.set("key2","value2"));
  51. System.out.println(jedis.set("key3", "value3"));
  52. System.out.println("删除键key2:"+jedis.del("key2"));
  53. System.out.println("获取键key2:"+jedis.get("key2"));
  54. System.out.println("修改key1:"+jedis.set("key1", "value1Changed"));
  55. System.out.println("获取key1的值:"+jedis.get("key1"));
  56. System.out.println("在key3后面加入值:"+jedis.append("key3", "End"));
  57. System.out.println("key3的值:"+jedis.get("key3"));
  58. System.out.println("增加多个键值对:"+jedis.mset("key01","value01","key02","value02","key03","value03"));
  59. System.out.println("获取多个键值对:"+jedis.mget("key01","key02","key03"));
  60. System.out.println("获取多个键值对:"+jedis.mget("key01","key02","key03","key04"));
  61. System.out.println("删除多个键值对:"+jedis.del(new String[]{"key01","key02"}));
  62. System.out.println("获取多个键值对:"+jedis.mget("key01","key02","key03"));
  63. jedis.flushDB();
  64. System.out.println("===========新增键值对防止覆盖原先值==============");
  65. System.out.println(jedis.setnx("key1", "value1"));
  66. System.out.println(jedis.setnx("key2", "value2"));
  67. System.out.println(jedis.setnx("key2", "value2-new"));
  68. System.out.println(jedis.get("key1"));
  69. System.out.println(jedis.get("key2"));
  70. System.out.println("===========新增键值对并设置有效时间=============");
  71. System.out.println(jedis.setex("key3", 2, "value3"));
  72. System.out.println(jedis.get("key3"));
  73. TimeUnit.SECONDS.sleep(3);
  74. System.out.println(jedis.get("key3"));
  75. System.out.println("===========获取原值,更新为新值==========");//GETSET is an atomic set this value and return the old value command.
  76. System.out.println(jedis.getSet("key2", "key2GetSet"));
  77. System.out.println(jedis.get("key2"));
  78. System.out.println("获得key2的值的字串:"+jedis.getrange("key2", 2, 4));
  79. }
  80. /***
  81. * 整数和浮点数
  82. */
  83. @Test
  84. public void testNumber() {
  85. jedis.flushDB();
  86. jedis.set("key1", "1");
  87. jedis.set("key2", "2");
  88. jedis.set("key3", "2.3");
  89. System.out.println("key1的值:"+jedis.get("key1"));
  90. System.out.println("key2的值:"+jedis.get("key2"));
  91. System.out.println("key1的值加1:"+jedis.incr("key1"));
  92. System.out.println("获取key1的值:"+jedis.get("key1"));
  93. System.out.println("key2的值减1:"+jedis.decr("key2"));
  94. System.out.println("获取key2的值:"+jedis.get("key2"));
  95. System.out.println("将key1的值加上整数5:"+jedis.incrBy("key1", 5));
  96. System.out
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hello_world!

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值