前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis 学习(8)-- redis 客户端 -- Jedis

redis 学习(8)-- redis 客户端 -- Jedis

作者头像
希希里之海
发布2019-06-03 09:51:12
6270
发布2019-06-03 09:51:12
举报
文章被收录于专栏:weixuqin 的专栏

redis 客户端 -- Jedis

1. Jedis 直连

本质是 TCP 连接。

执行流程
  1. 创建Jedis对象
  2. 通过Jedis执行命令
  3. 返回Jedis执行结果
  4. 关闭Jedis连接
demo

要使用 Jedis,首先我们需要安装 maven 依赖。

代码语言:javascript
复制
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

创建一个简单的 Jedis 直连的小例子:

代码语言:javascript
复制
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 的方式
代码语言:javascript
复制
/**
 *  @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 连接池的方式
代码语言:javascript
复制
JedisPoolConfig config = new JedisPoolConfig();
JedisPool jedisPool = new JedisPool(config , "127.0.0.1" , 6379);
Jedis jedis = jedisPool.getResource();
jedis.close();
demo
代码语言:javascript
复制
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对象预先生成,降低使用开销连接池的形式保护和控制资源的使用

相对于直连,使用相对麻烦尤其在资源的管理上需要许多参数保证一旦参数不合理会出现很多问题

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • redis 客户端 -- Jedis
    • 1. Jedis 直连
      • 执行流程
      • demo
      • 创建 Jedis 的方式
    • 2. Jedis 连接池
      • 执行流程
      • 创建 Jedis 连接池的方式
      • demo
    • 3. Jedis 直连 VS Jedis 连接池
    相关产品与服务
    云数据库 Redis®
    腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档