[3-02-01].第13节:三方整合 - Jedis客户端操作Redis

Redis大纲


一、什么是Jedis:

  • Jedis Client是Redis官网推荐的一个面向java客户端文件实现对各类API进行封装调用

二、基于Maven整合Jedis操作Redis:

第1步:引入依赖:

  • 1.新建maven项目,pom文件中引入依
xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.jianqun</groupId>
    <artifactId>jedis-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.7.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

第2步:创建连接:

java 复制代码
package com.jianqun;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;
import java.util.Map;

public class JedisTest {
    private Jedis jedis;

    @BeforeEach
    public void setUp() {
        // 建立连接
        jedis = new Jedis("192.168.148.3", 6379);
        // 设置密码
        //jedis.auth("123321");
        //选择库
        jedis.select(0);
    }
}

第3步:Jedis操作redis:

java 复制代码
package com.jianqun;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;
import java.util.Map;

public class JedisTest {
    private Jedis jedis;

    @BeforeEach
    public void setUp() {
        // 建立连接
        jedis = new Jedis("192.168.148.3", 6379);
        // 设置密码
        //jedis.auth("123321");
        //选择库
        jedis.select(0);
    }
    
    //测试操作Redis
    //测试String类型的数据结构
    @Test
    void testString() {
        // 插入数据,方法名称就是redis命令名称,非常简单
        String result = jedis.set("name", "张三");
        System.out.println("result = " + result);
        // 获取数据
        String name = jedis.get("name");
        System.out.println("name = " + name);
    }

    //测试Hash数据结构
    @Test
    void testHash() {
        // 插入数据,方法名称就是redis命令名称,非常简单
        jedis.hset("user:1", "name","张三");
        jedis.hset("user:1", "age","12");
        //获取数据
        Map<String, String> map = jedis.hgetAll("user:1");
        System.out.println("map= " + map);
    }

    //释放资源
    @AfterEach
    void tearDown() {
        // 释放资源
        if (jedis != null) {
            jedis.close();
        }
    }
}

第4步:项目结构:


二、使用Jedis连接池方式操作Redis

2.1.说明:

  • Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此我们推荐大家使用Jedis连接池代替Jedis;

2.2.编码实现

a.创建Jedis连接池的工具类:

java 复制代码
package com.jianqun.util;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * Redis连接池
 */
public class JedisConnectionFactory {
    private static final JedisPool jedisPool;

    static {
        // 配置连接池
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        // 最大连接
        jedisPoolConfig.setMaxTotal(8);
        // 最大空闲连接
        jedisPoolConfig.setMaxIdle(8);
        // 最小空闲连接
        jedisPoolConfig.setMinIdle(0);
        // 设置最长等待时间, ms
        jedisPoolConfig.setMaxWaitMillis(200);
        // 创建连接池对象:参数分别是服务器地址、端口号、超时时间、redis密码
        jedisPool = new JedisPool(jedisPoolConfig, "192.168.148.3", 6379,1000, "190915");
    }

    // 获取Jedis对象
    public static Jedis getJedis(){
        return jedisPool.getResource();
    }
}

b.使用连接池创建连接,进行测试:

java 复制代码
package com.jianqun.test2;

import com.jianqun.util.JedisConnectionFactory;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;

/**
 * Redis连接池进行连接
 */
public class chiJedisTest {
    private Jedis jedis;

    @BeforeEach
    void setUp() {
        jedis = JedisConnectionFactory.getJedis();
    }

    @Test
    void test(){
        //存入数据
        String result = jedis.set("name", "虎哥");
        System.out.println("存储成功与否:" + result);

        //获取数据
        String name = jedis.get("name");
        System.out.println("获取的name值是:" + name);
    }

    @AfterEach
    void tearDown() {
        if (jedis != null){
            jedis.close();
        }
    }
}
相关推荐
sclibingqing2 小时前
SpringBoot项目使用Redis作为数据缓存
spring boot·redis·缓存
hqxstudying5 小时前
JAVA面试题
java·jvm·数据库·redis·mysql·oracle
卜及中16 小时前
【Redis/1-前置知识】分布式系统概论:架构、数据库与微服务
数据库·redis·架构
奈斯ing17 小时前
【prometheus+Grafana篇】基于Prometheus+Grafana实现Redis数据库的监控与可视化
数据库·redis·缓存·grafana·prometheus
·云扬·21 小时前
【PmHub面试篇】PmHub中基于Redis加Lua脚本的计数器算法限流实现面试专题解析
redis·面试·lua
哈喽姥爷1 天前
苍穹外卖--缓存菜品
redis·苍穹外卖·黑马·缓存菜品
伤不起bb1 天前
NoSQL 之 Redis 集群
数据库·redis·nosql
大得3691 天前
go全局配置redis,全局只需要连接一次,然后全局可以引用使用
开发语言·redis·golang
眠修1 天前
NoSQL 之 Redis 集群
java·redis·nosql
❀͜͡傀儡师1 天前
使用docker 安装Redis 带配置文件(x86和arm)版本
redis·docker·容器