redis 客户端 -- Jedis

1. Jedis 直连

本质是 TCP 连接。

执行流程

  1. 创建Jedis对象
  2. 通过Jedis执行命令
  3. 返回Jedis执行结果
  4. 关闭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 连接池

执行流程

  1. 创建一个JedisPool对象
  2. 从资源池中获取一个Jedis对象
  3. 通过Jedis执行命令
  4. 返回Jedis执行结果
  5. 关闭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的更多相关文章

  1. redis学习(七)jedis客户端

    1.下载jedis的jar包 http://repo1.maven.org/maven2/redis/clients/jedis/2.8.1/ 2.启动redis后台 3.测试联通 package c ...

  2. Redis 学习笔记3:Jedis 连接虚拟机下的Redis 服务

    Jedis 是 Redis 官方首选的 Java 客户端开发包. 虚拟机的IP地址是192.168.8.88. Jedis代码是放在windows上的,启动虚拟机上的Redis服务之后,用Jedis连 ...

  3. Redis学习笔记--Redis客户端(三)

    1.Redis客户端 1.1 Redis自带的客户端 (1)启动 启动客户端命令:[root@kwredis bin]# ./redis-cli -h 127.0.0.1 -p 6379 -h:指定访 ...

  4. Redis安装以及Java客户端jedis连接不上相关问题解决

    安装步骤 1.由于Redis是由C 语言编写的 所以虚拟机编译需要C的编译环境 用命令 yum install gcc-c++ 2.用SFTP上传Redis安装包并解压 3.进入Redis源码目录 b ...

  5. Redis学习(5)-Jedis(Java操作redis数据库技术)

    Java连接redis 一,导入jar包 Redis有什么命令,Jedis就有什么方法 设置防火墙 在Linux上面运行如下代码: 单实例:Jedis实例: package com.jedis.dem ...

  6. Redis学习-redis概述

    最近刚刚接触了redis技术,对此有一些了解,这是简单做一点总结. Redis简介 首先,简单了解一下NoSQL(Not only sql),不要错误的理解为:没有SQL,而是不仅仅是SQL.NoSQ ...

  7. Redis学习笔记~Redis主从服务器,读写分离

    回到目录 Redis这个Nosql的存储系统一般会被部署到linux系统中,我们可以把它当成是一个数据服务器,对于并发理大时,我们会使用多台服务器充当Redis服务器,这时,各个Redis之间也是分布 ...

  8. redis学习笔记-redis的安装

    Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases Redis 支持 32 位和 64 位.这个需要根据你系统平台的实际情况选择, ...

  9. redis学习之——redis.conf配置(基本)文件学习

    # Redis configuration file example # Note on units: when memory size is needed, it is possible to sp ...

  10. Redis学习笔记-Redis内部数据结构

    Redis内部数据结构 Redis和其他key-value数据库的很大区别是它支持非字符串类型的value值.它支持的value值的类型如下: sds (simple dynamic string) ...

随机推荐

  1. LeetCode 113. 路径总和 II(Path Sum II)

    题目描述 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / ...

  2. Ubuntu16 升级nodejs版本

    Ubuntu16下,使用apt-get下载的nodejs最新版本为v4.2.6,而react-native需要v8.x及以上的版本 解决方法在网上找到了这一篇博客Ubuntu安装最新版nodejs,用 ...

  3. oracle表结构表数据导入导出

    --------------------------------------imp/exp------------------------------------------------------- ...

  4. tensorflow源码分析——BasicLSTMCell

    BasicLSTMCell 是最简单的LSTMCell,源码位于:/tensorflow/contrib/rnn/python/ops/core_rnn_cell_impl.py.BasicLSTMC ...

  5. find 命令详细解释

    命令格式:find pathname -options [-print -exec -ok ...] 命令参数: pathname: find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系 ...

  6. linux中的i2c控制器驱动应该做些什么?

    答:完成读写功能即可,不要涉及任何针对从设备的特殊操作,这样就可以避免与从设备的代码产生冗余,linux中的i2c控制器驱动就做的特别棒,做好最简单的读写,然后其它的从设备驱动就是直接调用这些最简单的 ...

  7. 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 ...

  8. mysql|full join 多表联查,系统报错,无法解答!

    查询语句: select 分数 from cfull join don c.姓名=d.姓名 报错: [Err] 1054 - Unknown column 'c.姓名' in 'on clause' ...

  9. exe4J打包jar文件成exe可执行文件

    exe4j_6.0下载(x86\x64\注册机):        https://pan.baidu.com/s/1oFzif5ZVswbgbBkKHc8HFQ 打包步骤: 再次偷一下懒,使用别人的内 ...

  10. CMD(命令提示符)-------javac编译程序出现“”编码GBK的不可映射字符“”

    问题描述:使用命令提示符(CMD)编译写好的java程序的时候出现“编码GBK的不可映射字符” 问题截图: 问题分析:看提示就知道是代码的注释出现问题,但注释格式完全正确,那么问题就只可能是注释编码出 ...