[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();
        }
    }
}
相关推荐
海梨花19 小时前
【从零开始学习Redis】项目实战-黑马点评D2
java·数据库·redis·后端·缓存
鼠鼠我捏,要死了捏1 天前
生产环境Redis缓存穿透与雪崩防护性能优化实战指南
redis·cache
曾经的三心草2 天前
微服务的编程测评系统11-jmeter-redis-竞赛列表
redis·jmeter·微服务
努力努力再努力wz2 天前
【c++深入系列】:万字详解模版(下)
java·c++·redis
2301_793086872 天前
Redis 04 Reactor
数据库·redis·缓存
AAA修煤气灶刘哥2 天前
搞定 Redis 不难:从安装到实战的保姆级教程
java·redis·后端
青鱼入云2 天前
redis怎么做rehash的
redis·缓存
考虑考虑2 天前
Redis事务
redis·后端
陈天cjq2 天前
Redis 实用型限流与延时队列:从 Lua 固定/滑动窗口到 Streams 消费组(含脚本与压测)
redis·junit·lua
Warren982 天前
Lua 脚本在 Redis 中的应用
java·前端·网络·vue.js·redis·junit·lua