[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();
        }
    }
}
相关推荐
ALex_zry15 小时前
Redis Cluster 分布式缓存架构设计与实践
redis·分布式·缓存
乔江seven18 小时前
【Flask 进阶】3 从同步到异步:基于 Redis 任务队列解决 API 高并发与长耗时任务阻塞
redis·python·flask
这周也會开心19 小时前
Redis与MySQL回写中的数据类型存储设计
数据库·redis·mysql
shuair19 小时前
redis缓存预热、缓存击穿、缓存穿透、缓存雪崩
redis·spring·缓存
shuair20 小时前
guava布隆过滤器及cuckoo过滤器
redis·guava
上架ipa20 小时前
redis图形化客户端功能对比
redis·缓存
indexsunny1 天前
互联网大厂Java面试实战:微服务与Spring生态技术解析
java·spring boot·redis·kafka·mybatis·hibernate·microservices
为什么不问问神奇的海螺呢丶1 天前
n9e categraf redis监控配置
前端·redis·bootstrap
笨蛋不要掉眼泪1 天前
RAG知识库核心API架构全解析:从文档加载到向量检索的完整流程
java·spring boot·redis·ai·架构
学到头秃的suhian1 天前
Redis执行
redis