目录

一、快速上手

  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如下:

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
</dependency>

  

1.2、第一个示例

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

  

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

package cn.ganlixin.redis;

import org.junit.Test;
import redis.clients.jedis.Jedis; public class JedisExample { @Test
public void testFirstExample() {
// 连接redis
Jedis jedis = new Jedis("localhost", 6379);
// Jedis jedis = new Jedis("localhost"); // 默认6379端口 // string类型
jedis.set("name", "demo");
String name = jedis.get("name"); // list类型
jedis.lpush("myList", "hello");
jedis.rpush("myList", "world");
String lpopVal = jedis.lpop("myList");
String rpopVal = jedis.rpop("myList"); // set类型
jedis.sadd("mySet", "123");
jedis.sadd("mySet", "456");
jedis.sadd("mySet", "789");
jedis.srem("mySet", "789");
jedis.scard("mySet"); // zset类型
jedis.zadd("myZset", 99, "X");
jedis.zadd("myZset", 90, "Y");
jedis.zadd("myZset", 97, "Z");
Double zscore = jedis.zscore("myZset", "Z"); // 其他
jedis.incr("intKey");
jedis.incrBy("intKey", 5);
jedis.del("intKey"); // 触发持久化
// jedis.save();
// jedis.bgsave() // 关闭连接
jedis.close();
}
}

  

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

  

二、使用Jedis连接池

2.1、使用示例

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

package cn.ganlixin.redis;

import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; public class JedisPoolExample { @Test
public void testUsePool() { // 配置连接池
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(20);
config.setMaxIdle(10);
config.setMinIdle(5); // 创建连接池
JedisPool jedisPool = new JedisPool(config, "localhost", 6379); Jedis jedis = jedisPool.getResource(); // 使用jedis进行操作
jedis.set("name", "otherNameVal"); // 用完之后,一定要手动关闭连接(归还给连接池)
jedis.close();
}
}

2.2、封装工具类

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

package cn.ganlixin.redis.util;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; /**
* 描述: Jedis工具类(封装了连接池)
*/
public class JedisUtils { private static JedisPool jedisPool; static {
// 配置连接池
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(5);
config.setMaxIdle(3);
config.setMinIdle(2); // 创建连接池
jedisPool = new JedisPool(config, "localhost", 6379);
} /**
* 获取redis连接
*/
public static Jedis getJedis() {
return jedisPool.getResource();
}
}

  

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

package cn.ganlixin.redis;

import cn.ganlixin.redis.util.JedisUtils;
import org.junit.Test;
import redis.clients.jedis.Jedis; public class JedisPoolExample { @Test
public void testJedisPoolUtil() {
Jedis jedis = JedisUtils.getJedis();
jedis.set("name123", "demo"); // 一定要关闭jedis连接
jedis.close();
}
}

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

三、使用Jedis连接Redis集群

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

3.1、单纯的JedisCluster

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

package cn.ganlixin.redis;

import org.junit.Test;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster; import java.util.HashSet;
import java.util.Set; /**
* Jedis操作Redis集群
*/
public class JedisClusterExample { @Test
public void testExample() {
// 设置redis集群的节点信息
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("192.168.1.3", 6379));
nodes.add(new HostAndPort("192.168.1.4", 6379));
nodes.add(new HostAndPort("192.168.1.5", 6379)); // 创建jediscluster,可以理解为jedis对象
JedisCluster cluster = new JedisCluster(nodes); // 和jedis的使用方式几乎一样
cluster.set("name", "nameDemo"); // 使用完毕后,不需要释放连接
// cluster.close();
}
}

  

3.2、配合使用连接池

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

package cn.ganlixin.redis;

import org.junit.Test;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig; import java.util.HashSet;
import java.util.Set; /**
* Jedis操作Redis集群
*/
public class JedisClusterExample { @Test
public void clusterWithPool() { // 设置redis集群的节点信息
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("192.168.1.3", 6379));
nodes.add(new HostAndPort("192.168.1.4", 6379));
nodes.add(new HostAndPort("192.168.1.5", 6379)); // 配置连接池
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(5);
jedisPoolConfig.setMaxIdle(3);
jedisPoolConfig.setMinIdle(2); // 创建jediscluster,传入节点列表和连接池配置
JedisCluster cluster = new JedisCluster(nodes, jedisPoolConfig); // 和jedis的使用方式几乎一样
cluster.set("name", "nameDemo2121"); // 使用完毕后,不需要释放连接
// cluster.close();
}
}

  执行程序,在命令行中登录到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. 【Feign调用异常】org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported

    一.异常场景描述 明明是post请求,为啥到达服务器后就变成了get请求 2019-05-30 18:07:17.055 [http-nio-10650-exec-4] ERROR c.x.xcaut ...

  2. 百度编译器ueditor插入视频的时候。在预览的窗口提示 “输入的视频地址有误,请检查后再试!

    ueditor.all.js: 搜索me.commands["insertvideo"] 把html.push(creatInsertStr( vi.url, vi.width | ...

  3. Python模块(导入,内置,自定义,开源)

    目录: 模块介绍 自定义模块 内置模块 开源模块 一.模块 1.模块简介 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能.这也是使用p ...

  4. 格式化字符串——初级% 和format

    print '{a},{b}'.format(a='hello',b='word') st='a %s %s x y z' st1=('b','c') print st%st1 print '%s % ...

  5. django-用户认证模型

    django本身会在mysql里存储一个user数据库 为了和django本身的user表区分 要在第一次迁移数据库前配置认证系统使用的用户模型 settings.py # django认证系统使用的 ...

  6. LeetCode 1140. Stone Game II

    原题链接在这里:https://leetcode.com/problems/stone-game-ii/ 题目: Alex and Lee continue their games with pile ...

  7. HTTP协议(待写)

    先来了解了解 TCP/IP TCP/IP(Transmission Control Protocol / Internet Protocol)是计算机通讯必须遵守的规则,是不同的通信协议的大集合,其里 ...

  8. Lightning Web Components 组件样式(四)

    要将样式与组件进行绑定,需要创建一个同名的样式文件,这样样式将会自动应用到组件 在组件中定义的样式的作用域是属于组件的,这样允许组件可以在不同的上下文中可以复用, 可以阻止其他组件的样式的复写 css ...

  9. Codeforces 526C.Om Nom and Candies

    题目描述 一个只有两个物品的背包问题,但是范围都是1e9,需要考虑根号或者log的复杂度. 如果这两个物品中的某一个花费超过了根号C,那么我们可以直接枚举这件物品的数量,另一件物品的数量可以计算得出. ...

  10. BZOJ 3435: [Wc2014]紫荆花之恋

    二次联通门 : BZOJ 3435: [Wc2014]紫荆花之恋 二次联通门 : luogu P3920 [WC2014]紫荆花之恋 /* luogu P3920 [WC2014]紫荆花之恋 怀疑人生 ...