Redis(十二)——Jedis 的概述和使用

本文介绍了Java连接Redis的工具Jedis,包括下载、导入Maven依赖及基本使用方法。通过示例展示了如何连接Redis服务,执行基本的键值对操作,如设置、获取、删除数据,以及使用事务。还提供了连接远程Redis的配置方法。

Redis(十二)——Jedis的概述和使用

1、Jedis概述

Jedis 是Redis官方推荐的Java连接开发工具。

Jedis 是一个非常小且智能的Redis java客户端,并且易于使用。

Jedis 与redis 2.8.x、3.x.x及以上版本完全兼容。

Jedis在 github 上的地址

如何下载 Jedis

1、下载最新版本使用

下载地址:http://github.com/redis/jedis/releases/

2、导入依赖使用:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.6.3</version>
</dependency>

2、使用Jedis

连接 Redis 服务

1、新建一个maven项目,导入依赖:

        <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.6.3</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.78</version>
        </dependency>

2、启动本地 Redis 服务,启动完成!

在这里插入图片描述

3、连接本地 Redis 服务

public class JedisTest01 {
    public static void main(String[] args) {

        Jedis jedis = new Jedis("127.0.0.1",6379);//连接本地redis服务
        System.out.println(jedis.ping()); //PONG
    }
}

连接成功!

补充:连接远程 Redis 的步骤:

一. 配置redis.conf

    1. 设置访问redis的密码:requirepass 要设置密码
    2. 注释bind 127.0.0.1
    3. 重启redis-server服务,进入redis后要先验证密码,用这个命令:auth 密码 ,然后ping一下看有没有配置成功

二 . idea访问时添加auth密码

Jedis jedis = new Jedis(服务器的外网ip,6379);
jedis.auth(redis的密码);
System.out.println(jedis.ping());

输出PONG的话就成功了

测试 Redis 实例

Redis Keys 实例:

public class JedisTest01 {
    public static void main(String[] args) {

        Jedis jedis = new Jedis("localhost",6379);//连接本地redis服务
        System.out.println("清空当前数据库数据:"+jedis.flushDB());
        System.out.println("判断某个键是否存在:"+jedis.exists("username"));
        System.out.println("设置键值对:"+jedis.set("name","wanli"));
        System.out.println("设置键值对:"+jedis.set("pwd","123456"));
        System.out.println("设置键值对:"+jedis.set("age","男"));
        System.out.println("查看所有key:"+jedis.keys("*"));
        System.out.println("删除key:"+jedis.keys("pwd"));
        System.out.println("查看key的类型:"+jedis.type("name"));
        System.out.println("随机返回一个key:"+jedis.randomKey());
        System.out.println("重命名key:"+jedis.rename("name","username"));
        System.out.println("按下标查询key:"+jedis.select(0));
        System.out.println("返回当前数据库key的数目:"+jedis.dbSize());
        System.out.println("清空所有数据库的数据:"+jedis.flushAll());    
    }
}

运行结果:

在这里插入图片描述

Redis String(字符串) 实例:

public class JedisTest02 {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost",6379);//连接本地redis服务
        System.out.println("==========增加数据===========");
        System.out.println(jedis.set("k1","v1"));
        System.out.println(jedis.set("k2","v2"));
        System.out.println(jedis.set("k3","v3"));
        System.out.println("在k2后面追加值:"+jedis.append("key2","LAST"));
        System.out.println("k2的值:"+jedis.get("key2"));
        System.out.println("增加多个k-v:"+jedis.mset("k4","v4","k5","v5"));
        System.out.println("获取多个k-v:"+jedis.mset("k4","k5"));
        System.out.println("删除多个k-v:"+jedis.del("k4","k5"));

        System.out.println(jedis.flushDB());
        System.out.println("==========新增键值对防止覆盖原先值===========");
        System.out.println(jedis.setnx("k1","v1"));
        System.out.println(jedis.setnx("k2","v2"));
        System.out.println(jedis.setnx("k2","value2"));
        System.out.println(jedis.get("k1"));
        System.out.println(jedis.get("k2"));

        System.out.println("==========新增键值对并设置过期时间===========");
        System.out.println(jedis.setex("k3",5,"v3"));
        System.out.println(jedis.get("k3"));
        try {
            TimeUnit.SECONDS.sleep(6);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(jedis.get("k3"));
        System.out.println("==========获取原来值,设置为新值===========");
        System.out.println(jedis.getSet("k2","getsetv2"));
        System.out.println(jedis.get("k2"));
        System.out.println("获取指定范围的字符串:"+jedis.getrange("k2",2,5));
    }
}

运行结果:

在这里插入图片描述

Redis List(列表) 实例:

public class JedisTest03 {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost",6379);//连接本地redis服务

        System.out.println("连接成功");
        //存储数据到列表中
        jedis.lpush("site-list", "Runoob");
        jedis.lpush("site-list", "Google");
        jedis.lpush("site-list", "Taobao");
        // 获取存储的数据并输出
        List<String> list = jedis.lrange("site-list", 0 ,2);
        for(int i=0; i<list.size(); i++) {
            System.out.println("列表项为: "+list.get(i));
        }
    }
}

运行结果:

在这里插入图片描述

Jedis 操作事务

1、事务正常执行

public class JedisTest04 {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost",6379);//连接本地redis服务
        JSONObject object = new JSONObject();
        object.put("name","shenming");
        object.put("password","123456");
        Transaction multi = jedis.multi();//开启事务
        String string = object.toJSONString(); //将java对象转换为json格式

        try {
            multi.set("user1",string); //命令入队
            multi.set("user2",string);
            multi.exec(); //执行事务
        } catch (Exception e) {
            multi.discard();  //如果有异常就放弃事务
            e.printStackTrace();
        } finally {
            System.out.println(jedis.get("user1"));
            System.out.println(jedis.get("user2"));
            jedis.close(); //断开连接
        }
    }
}

2、事务运行时异常

在命令入队时加上 int i = 10 / 0

int i = 10 / 0 ;

在这里插入图片描述

如上图,因为存在运行时异常,事务执行失败。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万里顾—程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值