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) ...
随机推荐
- LeetCode 113. 路径总和 II(Path Sum II)
题目描述 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / ...
- Ubuntu16 升级nodejs版本
Ubuntu16下,使用apt-get下载的nodejs最新版本为v4.2.6,而react-native需要v8.x及以上的版本 解决方法在网上找到了这一篇博客Ubuntu安装最新版nodejs,用 ...
- oracle表结构表数据导入导出
--------------------------------------imp/exp------------------------------------------------------- ...
- tensorflow源码分析——BasicLSTMCell
BasicLSTMCell 是最简单的LSTMCell,源码位于:/tensorflow/contrib/rnn/python/ops/core_rnn_cell_impl.py.BasicLSTMC ...
- find 命令详细解释
命令格式:find pathname -options [-print -exec -ok ...] 命令参数: pathname: find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系 ...
- linux中的i2c控制器驱动应该做些什么?
答:完成读写功能即可,不要涉及任何针对从设备的特殊操作,这样就可以避免与从设备的代码产生冗余,linux中的i2c控制器驱动就做的特别棒,做好最简单的读写,然后其它的从设备驱动就是直接调用这些最简单的 ...
- LC 711. Number of Distinct Islands II
Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...
- mysql|full join 多表联查,系统报错,无法解答!
查询语句: select 分数 from cfull join don c.姓名=d.姓名 报错: [Err] 1054 - Unknown column 'c.姓名' in 'on clause' ...
- exe4J打包jar文件成exe可执行文件
exe4j_6.0下载(x86\x64\注册机): https://pan.baidu.com/s/1oFzif5ZVswbgbBkKHc8HFQ 打包步骤: 再次偷一下懒,使用别人的内 ...
- CMD(命令提示符)-------javac编译程序出现“”编码GBK的不可映射字符“”
问题描述:使用命令提示符(CMD)编译写好的java程序的时候出现“编码GBK的不可映射字符” 问题截图: 问题分析:看提示就知道是代码的注释出现问题,但注释格式完全正确,那么问题就只可能是注释编码出 ...