目录

一、快速上手

  1.1、导入依赖

  1.2、第一个示例

二、使用Jedis连接池

  2.1、使用示例

  2.2、封装工具类

三、使用Jedis连接Redis集群

  3.1、单纯的JedisCluster

  3.2、配合使用连接池

一、快速上手

1.1、导入依赖

  jedis的github网址:https://github.com/xetorthio/jedis

  maven仓库信息:https://mvnrepository.com/artifact/redis.clients/jedis

  本文所使用的的是最新的3.2.0版本,jedis的maven依赖xml如下:

  1. <dependency>
  2. <groupId>redis.clients</groupId>
  3. <artifactId>jedis</artifactId>
  4. <version>3.2.0</version>
  5. </dependency>

  

1.2、第一个示例

  测试的时候,使用本地安装的redis,所以先将本地的redis服务器启动

  

  导入以来以后,可以创建一个单元测试类进行测试

  1. package cn.ganlixin.redis;
  2.  
  3. import org.junit.Test;
  4. import redis.clients.jedis.Jedis;
  5.  
  6. public class JedisExample {
  7.  
  8. @Test
  9. public void testFirstExample() {
  10. // 连接redis
  11. Jedis jedis = new Jedis("localhost", 6379);
  12. // Jedis jedis = new Jedis("localhost"); // 默认6379端口
  13.  
  14. // string类型
  15. jedis.set("name", "demo");
  16. String name = jedis.get("name");
  17.  
  18. // list类型
  19. jedis.lpush("myList", "hello");
  20. jedis.rpush("myList", "world");
  21. String lpopVal = jedis.lpop("myList");
  22. String rpopVal = jedis.rpop("myList");
  23.  
  24. // set类型
  25. jedis.sadd("mySet", "123");
  26. jedis.sadd("mySet", "456");
  27. jedis.sadd("mySet", "789");
  28. jedis.srem("mySet", "789");
  29. jedis.scard("mySet");
  30.  
  31. // zset类型
  32. jedis.zadd("myZset", 99, "X");
  33. jedis.zadd("myZset", 90, "Y");
  34. jedis.zadd("myZset", 97, "Z");
  35. Double zscore = jedis.zscore("myZset", "Z");
  36.  
  37. // 其他
  38. jedis.incr("intKey");
  39. jedis.incrBy("intKey", 5);
  40. jedis.del("intKey");
  41.  
  42. // 触发持久化
  43. // jedis.save();
  44. // jedis.bgsave()
  45.  
  46. // 关闭连接
  47. jedis.close();
  48. }
  49. }

  

  执行完毕后,可以通过redis客户端工具,登录到redis服务器查看存储的值

  

二、使用Jedis连接池

2.1、使用示例

  仍旧使用上面的maven依赖,示例代码如下

  1. package cn.ganlixin.redis;
  2.  
  3. import org.junit.Test;
  4. import redis.clients.jedis.Jedis;
  5. import redis.clients.jedis.JedisPool;
  6. import redis.clients.jedis.JedisPoolConfig;
  7.  
  8. public class JedisPoolExample {
  9.  
  10. @Test
  11. public void testUsePool() {
  12.  
  13. // 配置连接池
  14. JedisPoolConfig config = new JedisPoolConfig();
  15. config.setMaxTotal(20);
  16. config.setMaxIdle(10);
  17. config.setMinIdle(5);
  18.  
  19. // 创建连接池
  20. JedisPool jedisPool = new JedisPool(config, "localhost", 6379);
  21.  
  22. Jedis jedis = jedisPool.getResource();
  23.  
  24. // 使用jedis进行操作
  25. jedis.set("name", "otherNameVal");
  26.  
  27. // 用完之后,一定要手动关闭连接(归还给连接池)
  28. jedis.close();
  29. }
  30. }

2.2、封装工具类

  对于jedis连接池来说,只需要初始化一次即可,所以可以将其在工具类中实现,下面是我写的示例:

  1. package cn.ganlixin.redis.util;
  2.  
  3. import redis.clients.jedis.Jedis;
  4. import redis.clients.jedis.JedisPool;
  5. import redis.clients.jedis.JedisPoolConfig;
  6.  
  7. /**
  8. * 描述: Jedis工具类(封装了连接池)
  9. */
  10. public class JedisUtils {
  11.  
  12. private static JedisPool jedisPool;
  13.  
  14. static {
  15. // 配置连接池
  16. JedisPoolConfig config = new JedisPoolConfig();
  17. config.setMaxTotal(5);
  18. config.setMaxIdle(3);
  19. config.setMinIdle(2);
  20.  
  21. // 创建连接池
  22. jedisPool = new JedisPool(config, "localhost", 6379);
  23. }
  24.  
  25. /**
  26. * 获取redis连接
  27. */
  28. public static Jedis getJedis() {
  29. return jedisPool.getResource();
  30. }
  31. }

  

  配置项可以从配置文件中获取,下面是使用示例:

  1. package cn.ganlixin.redis;
  2.  
  3. import cn.ganlixin.redis.util.JedisUtils;
  4. import org.junit.Test;
  5. import redis.clients.jedis.Jedis;
  6.  
  7. public class JedisPoolExample {
  8.  
  9. @Test
  10. public void testJedisPoolUtil() {
  11. Jedis jedis = JedisUtils.getJedis();
  12. jedis.set("name123", "demo");
  13.  
  14. // 一定要关闭jedis连接
  15. jedis.close();
  16. }
  17. }

  使用Jedis连接池,最重要的就是:一定要手动关闭连接(释放连接),否则会因为连接耗尽而导致操作阻塞

三、使用Jedis连接Redis集群

  要使用jedis操作Redis集群,就必须先有一个redis集群,redis集群的搭建方式,可以参考:Redis集群搭建

3.1、单纯的JedisCluster

  这里的单纯,是指先简单可以下JedisCluster的用法,没有涉及到连接池相关的,后面会与连接池配合使用

  1. package cn.ganlixin.redis;
  2.  
  3. import org.junit.Test;
  4. import redis.clients.jedis.HostAndPort;
  5. import redis.clients.jedis.JedisCluster;
  6.  
  7. import java.util.HashSet;
  8. import java.util.Set;
  9.  
  10. /**
  11. * Jedis操作Redis集群
  12. */
  13. public class JedisClusterExample {
  14.  
  15. @Test
  16. public void testExample() {
  17. // 设置redis集群的节点信息
  18. Set<HostAndPort> nodes = new HashSet<>();
  19. nodes.add(new HostAndPort("192.168.1.3", 6379));
  20. nodes.add(new HostAndPort("192.168.1.4", 6379));
  21. nodes.add(new HostAndPort("192.168.1.5", 6379));
  22.  
  23. // 创建jediscluster,可以理解为jedis对象
  24. JedisCluster cluster = new JedisCluster(nodes);
  25.  
  26. // 和jedis的使用方式几乎一样
  27. cluster.set("name", "nameDemo");
  28.  
  29. // 使用完毕后,不需要释放连接
  30. // cluster.close();
  31. }
  32. }

  

3.2、配合使用连接池

  JedisCluster增加连接池,只需要配置一下连接池即可,示例如下:

  1. package cn.ganlixin.redis;
  2.  
  3. import org.junit.Test;
  4. import redis.clients.jedis.HostAndPort;
  5. import redis.clients.jedis.JedisCluster;
  6. import redis.clients.jedis.JedisPoolConfig;
  7.  
  8. import java.util.HashSet;
  9. import java.util.Set;
  10.  
  11. /**
  12. * Jedis操作Redis集群
  13. */
  14. public class JedisClusterExample {
  15.  
  16. @Test
  17. public void clusterWithPool() {
  18.  
  19. // 设置redis集群的节点信息
  20. Set<HostAndPort> nodes = new HashSet<>();
  21. nodes.add(new HostAndPort("192.168.1.3", 6379));
  22. nodes.add(new HostAndPort("192.168.1.4", 6379));
  23. nodes.add(new HostAndPort("192.168.1.5", 6379));
  24.  
  25. // 配置连接池
  26. JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
  27. jedisPoolConfig.setMaxTotal(5);
  28. jedisPoolConfig.setMaxIdle(3);
  29. jedisPoolConfig.setMinIdle(2);
  30.  
  31. // 创建jediscluster,传入节点列表和连接池配置
  32. JedisCluster cluster = new JedisCluster(nodes, jedisPoolConfig);
  33.  
  34. // 和jedis的使用方式几乎一样
  35. cluster.set("name", "nameDemo2121");
  36.  
  37. // 使用完毕后,不需要释放连接
  38. // cluster.close();
  39. }
  40. }

  执行程序,在命令行中登录到redis集群查看

  

  

redis连接池——JedisPool和JedisCluster的介绍与使用的更多相关文章

  1. 三:Redis连接池、JedisPool详解、Redisi分布式

    单机模式: package com.ljq.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; ...

  2. Java与redis交互、Jedis连接池JedisPool

    Java与redis交互比较常用的是Jedis. 先导入jar包: commons-pool2-2.3.jar jedis-2.7.0.jar 基本使用: public class RedisTest ...

  3. redis连接池(JedisPool)资源归还及timeout详解

    转载. https://blog.csdn.net/yaomingyang/article/details/79043019 一.连接池资源类详解都在注释上 package redis.v1.clie ...

  4. java操作redis redis连接池

    redis作为缓存型数据库,越来越受到大家的欢迎,这里简单介绍一下java如何操作redis. 1.java连接redis java通过需要jedis的jar包获取Jedis连接. jedis-2.8 ...

  5. redis连接池操作

    /** * @类描述 redis 工具 * @功能名 POJO * @author zxf * @date 2014年11月25日 */public final class RedisUtil { p ...

  6. Redis连接池

    package com.lee.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; impor ...

  7. Redis】Java中使用Jedis操作Redis(Maven导入包)、创建Redis连接池

    如果我们使用Java操作Redis, 需要确保已经安装了 redis 服务及 Java redis 驱动. Maven项目可以直接在pom.xml中加入jedis包驱动: <!-- https: ...

  8. redis连接池 jedis-2.9.0.jar+commons-pool2-2.4.2.jar

    java使用Redis连接池  jar包为 jedis-2.9.0.jar+commons-pool2-2.4.2.jar jar下载地址 package com.test; import redis ...

  9. Java Redis 连接池 Jedis 工具类

    import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; import re ...

随机推荐

  1. Kali下的内网劫持(四)

    在前面我都演示的是在Kali下用命令行的形式将在目标主机上操作的用户的信息捕获的过程,那么接下来我将演示在Kali中用图形界面的ettercap对目标主机的用户进行会话劫持: 首先启动图形界面的ett ...

  2. PAT甲级1002水题飘过

    #include<iostream> #include<string.h> using namespace std; ]; int main(){ int n1, n2; wh ...

  3. Codeforces Round #560 (Div. 3) Microtransactions

    Codeforces Round #560 (Div. 3) F2. Microtransactions (hard version) 题意: 现在有一个人他每天早上获得1块钱,现在有\(n\)种商品 ...

  4. jpa之No property buyerOpenId found for type OrderMaster! Did you mean 'buyerOpenid'?

    java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.conte ...

  5. ajax、axios、fetch 对比

    前言 今天在看到一个比较好的插件,写一个示例时,由于需要请求在线数据,官方给的是用 $.get(),就为了一个示例使用 JQuery 没必要. 又找了找,发现有用 fecth 的,挺方便,这里就做一个 ...

  6. Unity点击播放卡死问题的解决

    Unity项目使用了github for unity 插件,用来管理项目,结果安装完后Unity卡死在播放的界面,任务管理器中显示无响应. 经过排查后发现是 git for windows这个程序引起 ...

  7. JS获取访客IP进行自动跳转

    因业务需要进行地区判断跳转指定站点,下面是我个人实现的办法,分享给大家,仅供参考,切勿做非法用途 第一步,获取IP并判断归属地 直接使用搜狐的IP库查询接口 <script type=" ...

  8. 大数据开发之keras代码框架应用

    总体来讲keras这个深度学习框架真的很“简易”,它体现在可参考的文档写的比较详细,不像caffe,装完以后都得靠技术博客,keras有它自己的官方文档(不过是英文的),这给初学者提供了很大的学习空间 ...

  9. Ranger安装部署 - solr安装

    1. 概述 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库: Solr是以Lucene为基础实现的文本检索应用服务.Solr部署方式有单机方式.多机Master-Slaver方法. ...

  10. springboot 打成的jar包在ClassLoader().getResource方法读取文件为null

    1.属性文件如下: 10001=错误 2.文件读取主要代码 // getResource方式 URL resourceURI = getClass().getClassLoader().getReso ...