14.通过 Jedis 来操作 Redis

zhanglei 2022年07月27日 293次浏览

14.通过 Jedis 来操作 Redis

jedis 是 Redis 官方推荐的 java 连接开发工具,使用 java 操作 Redis 的中间件。

建一个maven项目

建一个空项目文件夹 Jedis

image-20220727171555049

在 project structure 中删掉 Jedis

image-20220727171722850

新建一个maven的module(项目)

image-20220727171921863

image-20220727171955881

远程连接redis

首先要进行远程服务器redis的密码设置、开放6379端口、去掉保护的操作

具体操作参考这个链接

导入对应的依赖

  <!--jedis-->
    <dependencies>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>4.2.3</version>
        </dependency>
    <!--fastjason-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version> 2.0.7</version>
        </dependency>
    </dependencies>

刷新maven项目

编码测试

连接redis数据库

操作命令

断开连接

package com.zhanglei;

import redis.clients.jedis.Jedis;

public class MyJedis {
    public static void main(String[] args) {
        //创建 Jedis对象,连接远程redis
        Jedis jedis=new Jedis("117.50.181.217",6379);
        // 数据库连接密码
        jedis.auth("zhanglei123");
        //测试连接
        System.out.println(jedis.ping());
        // set key1 value1
        System.out.println(jedis.set("key1","value1"));
        // get key1
        System.out.println(jedis.get("key1"));
    }
}

执行结果如下

image-20220727193018154

通过 Jedis 再次理解事务

没有 int i=1/0;

package com.zhanglei;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;


public class TestTX {
    public static void main(String[] args) {
        //创建 Jedis对象,连接远程redis
        Jedis jedis=new Jedis("117.50.181.217",6379);
        // 数据库连接密码
        jedis.auth("zhanglei123");
        // 清空当前数据库
        jedis.flushDB();
        // 开启事务
        Transaction multi=jedis.multi();
        try {
            // 命令入队
            multi.set("zhanglei","25");
            multi.set("lutingting","22");
            //int i=1/0;
            // 执行事务
            multi.exec();
        } catch (Exception e) {
            //放弃事务
            multi.discard();
            //抛出异常
            e.printStackTrace();
        }finally{
            System.out.println(jedis.get("zhanglei"));
            System.out.println(jedis.get("lutingting"));
            jedis.close();
        }
    }
}

image-20220727200857022

有 int i=1/0;

image-20220727200931981