redis 学习(8)-- redis 客户端 -- Jedis
redis 客户端 -- Jedis
1. Jedis 直连
本质是 TCP 连接。
执行流程
- 创建Jedis对象
- 通过Jedis执行命令
- 返回Jedis执行结果
- 关闭Jedis连接

demo
要使用 Jedis,首先我们需要安装 maven 依赖。
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
创建一个简单的 Jedis 直连的小例子:
import redis.clients.jedis.Jedis;
public class TestJedis {
public static void main(String[] args) {
// 1.生成一个 Jedis 对象,这个对象负责和指定 Redis 节点进行通信
Jedis jedis = new Jedis("localhost", 6381);
// 2. jedis 执行 set 操作
jedis.set("hello", "world");
// 3. jedis 执行 get 操作,value=“world”
String value = jedis.get("hello");
System.out.println(value);
}
}
输出结果如下:

创建 Jedis 的方式
/**
* @param host Redis节点所在机器的IP或域名
* @param port Redis服务的端口号
* @param connectionTimeout 客户端连接超时时间(毫秒)
* @param soTimeout 客户端读写超时时间(毫秒)
*/
public Jedis(String host , int port , int connectionTimeout , int soTimeout)
更多操作可以参考菜鸟教程 Jedis 教程
2. Jedis 连接池
执行流程
- 创建一个JedisPool对象
- 从资源池中获取一个Jedis对象
- 通过Jedis执行命令
- 返回Jedis执行结果
- 关闭Jedis连接,将Jedis还给资源池

创建 Jedis 连接池的方式
JedisPoolConfig config = new JedisPoolConfig();
JedisPool jedisPool = new JedisPool(config , "127.0.0.1" , 6379);
Jedis jedis = jedisPool.getResource();
jedis.close();
demo
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class TestJedis {
public static void main(String[] args) {
//初始化 Jedis 连接池,通常来说 jedisPool 是单例的。
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
JedisPool jedisPool = new JedisPool(poolConfig, "127.0.0.1", 6381);
Jedis jedis = null;
try {
// 1. 从连接池获取 Jedis 对象
jedis = jedisPool.getResource();
// 2. 执行操作
jedis.set("hello", "world");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
// 如果使用 JedisPool,close 操作不是关闭连接,代表归还连接池
jedis.close();
}
}
}
}
3. Jedis 直连 VS Jedis 连接池
| 优点 | 缺点 | |
|---|---|---|
| Jedis直连 | 使用简单 适用于少量长期连接的场景 |
存在每次新建/关闭TCP连接的开销 资源无法控制,存在连接泄露的风险 Jedis对象线程不安全 |
| Jedis连接池 | Jedis对象预先生成,降低使用开销 连接池的形式保护和控制资源的使用 |
相对于直连,使用相对麻烦 尤其在资源的管理上需要许多参数保证 一旦参数不合理会出现很多问题 |
redis 学习(8)-- redis 客户端 -- Jedis的更多相关文章
- redis学习(七)jedis客户端
1.下载jedis的jar包 http://repo1.maven.org/maven2/redis/clients/jedis/2.8.1/ 2.启动redis后台 3.测试联通 package c ...
- Redis 学习笔记3:Jedis 连接虚拟机下的Redis 服务
Jedis 是 Redis 官方首选的 Java 客户端开发包. 虚拟机的IP地址是192.168.8.88. Jedis代码是放在windows上的,启动虚拟机上的Redis服务之后,用Jedis连 ...
- Redis学习笔记--Redis客户端(三)
1.Redis客户端 1.1 Redis自带的客户端 (1)启动 启动客户端命令:[root@kwredis bin]# ./redis-cli -h 127.0.0.1 -p 6379 -h:指定访 ...
- Redis安装以及Java客户端jedis连接不上相关问题解决
安装步骤 1.由于Redis是由C 语言编写的 所以虚拟机编译需要C的编译环境 用命令 yum install gcc-c++ 2.用SFTP上传Redis安装包并解压 3.进入Redis源码目录 b ...
- Redis学习(5)-Jedis(Java操作redis数据库技术)
Java连接redis 一,导入jar包 Redis有什么命令,Jedis就有什么方法 设置防火墙 在Linux上面运行如下代码: 单实例:Jedis实例: package com.jedis.dem ...
- Redis学习-redis概述
最近刚刚接触了redis技术,对此有一些了解,这是简单做一点总结. Redis简介 首先,简单了解一下NoSQL(Not only sql),不要错误的理解为:没有SQL,而是不仅仅是SQL.NoSQ ...
- Redis学习笔记~Redis主从服务器,读写分离
回到目录 Redis这个Nosql的存储系统一般会被部署到linux系统中,我们可以把它当成是一个数据服务器,对于并发理大时,我们会使用多台服务器充当Redis服务器,这时,各个Redis之间也是分布 ...
- redis学习笔记-redis的安装
Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases Redis 支持 32 位和 64 位.这个需要根据你系统平台的实际情况选择, ...
- redis学习之——redis.conf配置(基本)文件学习
# Redis configuration file example # Note on units: when memory size is needed, it is possible to sp ...
- Redis学习笔记-Redis内部数据结构
Redis内部数据结构 Redis和其他key-value数据库的很大区别是它支持非字符串类型的value值.它支持的value值的类型如下: sds (simple dynamic string) ...
随机推荐
- Nmap简单的漏扫
转载至 https://www.4hou.com/technology/10481.html 导语:Nmap本身内置有丰富的NSE脚本,可以非常方便的利用起来,当然也可以使用定制化的脚本完成个人的 ...
- scrapy pipeline
pipeline的四个方法 @classmethod def from_crawler(cls, crawler): """ 初始化的时候,用以创建pipeline对象 ...
- 主线程 Looper.loop() 死循环为何不会ANR
先看下 ActivityThread 中的这段代码: 而 loop() 方法中,存在一个死循环: public static void loop() { ... ... ... for (;;) { ...
- Docker关键概念阐述
要了解Docker需要对其体系结构中的几个关键概念有所了解,主要包括image.container.service.swarm.stack等. 在介绍这几个概念时,会使用到一个测试环境,这个测试环境是 ...
- leetcode-hard-array-128. Longest Consecutive Sequence
mycode 92.62% class Solution(object): def longestConsecutive(self, nums): """ :type ...
- Python全栈开发第5天作业
作业一:1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) 2) 将用户信息数据库文件和用户密码数据库文件纵向合并为一个文件/2.txt(追加) 3) 将/1.txt. ...
- IDEA内存设置
之前,博主的idea一直运行正常,今天,开发了一个接口,因为接口在项目中另一个模块,之前从来没有启动过这个模块,由于调试接口将该模块也放到tomcat容器中,结果我的idea不停崩溃,于是查看idea ...
- CAD二次开发中各类多段线的dxf组码
Document doc = Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; ed.WriteMessag ...
- Alert 警告
基本用法 页面中的非浮层元素,不会自动消失. Alert 组件提供四种主题,由type属性指定,默认值为info. <template> <el-alert title=" ...
- log4j日志配置文件
log4j.properties: ### 设置### log4j.rootLogger = debug,stdout,D,E ### 输出信息到控制抬 ### log4j.appender.stdo ...