hincky的主页 hincky的主页
  • 学习笔记

    • Vue笔记
    • Vuepress
    • nginx
  • 语言类

    • java
    • go
    • python
    • 设计模式
  • 框架类

    • Spring
    • Spring Security
    • Mybatis
  • 容器技术

    • docker
    • k8s
    • helm
    • prometheus
    • grafana
    • jenkins
  • 命令集合

    • linux命令
    • docker命令
    • git命令
    • vim命令
    • k8s命令
  • 数据库

    • sql
    • mysql
  • 协议

    • 网络模型
    • http/1.1
    • WebSocket
    • http/2
    • TLS/SSL
    • tcp
    • IP
    • tcpdump抓包命令
    • wireshark抓包工具
  • 通用

    • Git
  • 技术分享

    • git push/pull总是超时怎么办
    • idea debug技巧
    • postman使用
    • 问题总结
    • idea使用技巧
  • Oauth2

    • Oauth2原理
  • 项目列表

    • redis项目
    • 微服务项目
  • 分类
  • 标签
  • 归档
  • 随笔
GitHub (opens new window)

Hincky

当有趣的人,做想做的事
  • 学习笔记

    • Vue笔记
    • Vuepress
    • nginx
  • 语言类

    • java
    • go
    • python
    • 设计模式
  • 框架类

    • Spring
    • Spring Security
    • Mybatis
  • 容器技术

    • docker
    • k8s
    • helm
    • prometheus
    • grafana
    • jenkins
  • 命令集合

    • linux命令
    • docker命令
    • git命令
    • vim命令
    • k8s命令
  • 数据库

    • sql
    • mysql
  • 协议

    • 网络模型
    • http/1.1
    • WebSocket
    • http/2
    • TLS/SSL
    • tcp
    • IP
    • tcpdump抓包命令
    • wireshark抓包工具
  • 通用

    • Git
  • 技术分享

    • git push/pull总是超时怎么办
    • idea debug技巧
    • postman使用
    • 问题总结
    • idea使用技巧
  • Oauth2

    • Oauth2原理
  • 项目列表

    • redis项目
    • 微服务项目
  • 分类
  • 标签
  • 归档
  • 随笔
GitHub (opens new window)
  • redis-点评项目

    • 基础篇

      • 安装redis
        • 认识Redis
        • 安装Redis
          • 依赖库
          • 下载安装包并解压
          • 启动
          • 默认启动
          • 指定配置启动
          • 开机自启
        • Redis桌面客户端
          • 命令行客户端
          • 图形化桌面客户端
          • 安装
          • 建立连接
          • 编程客户端
      • redis常见命令以及数据类型
        • Redis通用命令
        • String类型
          • String的常见命令
          • Key结构
        • Hash类型
        • List类型
        • Set类型
        • SortedSet类型
      • redis的java客户端
        • Redis客户端种类
          • Jedis
          • SpringDataRedis]
      • Jedis客户端
        • SpringDataRedis客户端
          • 快速入门
            • 1)引入依赖
            • 2)配置Redis
            • 3)注入RedisTemplate
            • 4)编写测试
            • 快速入门总结
          • 注意项
            • 默认序列化的弊端
            • 自定义序列化
            • StringRedisTemplate
          • 总结:
          • Hash结构操作
      • 实战篇

      • 高级篇

    • springcloud微服务项目

    • 项目实战
    • redis-点评项目
    • 基础篇
    hincky
    2022-11-06
    目录

    Jedis客户端

    Jedis的官网地址: https://github.com/redis/jedis

    # 快速入门

    # 1)引入依赖:

    <!--jedis-->
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>3.7.0</version>
    </dependency>
    <!--单元测试-->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>5.7.0</version>
        <scope>test</scope>
    </dependency>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    # 2)建立连接

    新建一个单元测试类,内容如下:

    private Jedis jedis;
    
    @BeforeEach
    void setUp() {
        // 1.建立连接
        // jedis = new Jedis("192.168.150.101", 6379);
        jedis = JedisConnectionFactory.getJedis();
        // 2.设置密码
        jedis.auth("123321");
        // 3.选择库
        jedis.select(0);
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    # 3)测试:

    @Test
    void testString() {
        // 存入数据
        String result = jedis.set("name", "虎哥");
        System.out.println("result = " + result);
        // 获取数据
        String name = jedis.get("name");
        System.out.println("name = " + name);
    }
    
    @Test
    void testHash() {
        // 插入hash数据
        jedis.hset("user:1", "name", "Jack");
        jedis.hset("user:1", "age", "21");
    
        // 获取
        Map<String, String> map = jedis.hgetAll("user:1");
        System.out.println(map);
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

    # 4)释放资源

    @AfterEach
    void tearDown() {
        if (jedis != null) {
            jedis.close();
        }
    }
    
    1
    2
    3
    4
    5
    6

    # 连接池

    提示

    Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗

    因此我们推荐大家使用Jedis连接池代替Jedis的直连方式。

    package com.heima.jedis.util;
    
    import redis.clients.jedis.*;
    
    public class JedisConnectionFactory {
    
        private static JedisPool jedisPool;
    
        static {
            // 配置连接池
            JedisPoolConfig poolConfig = new JedisPoolConfig();
            poolConfig.setMaxTotal(8);
            poolConfig.setMaxIdle(8);
            poolConfig.setMinIdle(0);
            poolConfig.setMaxWaitMillis(1000);
            // 创建连接池对象,参数:连接池配置、服务端ip、服务端端口、超时时间、密码
            jedisPool = new JedisPool(poolConfig, "192.168.150.101", 6379, 1000, "123321");
        }
    
        public static Jedis getJedis(){
            return jedisPool.getResource();
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23

    代码说明:

    • 1) JedisConnectionFacotry:工厂设计模式是实际开发中非常常用的一种设计模式,我们可以使用工厂,去降低代的耦合,比如Spring中的Bean的创建,就用到了工厂设计模式

    • 2)静态代码块:随着类的加载而加载,确保只能执行一次,我们在加载当前工厂类的时候,就可以执行static的操作完成对 连接池的初始化

    • 3)最后提供返回连接池中连接的方法.

    # 改造快速入门中代码

    代码说明:

    1.在我们完成了使用工厂设计模式来完成代码的编写之后,我们在获得连接时,就可以通过工厂来获得。

    而不用直接去new对象,降低耦合,并且使用的还是连接池对象。

    2.当我们使用了连接池后,当我们关闭连接其实并不是关闭,而是将Jedis还回连接池的。

        @BeforeEach
        void setUp(){
            //建立连接
            /*jedis = new Jedis("127.0.0.1",6379);*/
            jedis = JedisConnectionFacotry.getJedis();
             //选择库
            jedis.select(0);
        }
    
       @AfterEach
        void tearDown() {
            if (jedis != null) {
                jedis.close();
            }
        }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    编辑 (opens new window)
    redis的java客户端
    SpringDataRedis客户端

    ← redis的java客户端 SpringDataRedis客户端→

    最近更新
    01
    人生前期重要的能力
    05-17
    02
    防火墙命令
    04-11
    03
    docker-compose部署mysql主从集群
    03-22
    更多文章>
    Theme by Vdoing | Copyright © 2022-2023 Hincky | MIT License | 粤ICP备2022120427号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式