Redis-狂神(9. Jedis)学习笔记

上一篇 :8. 事务

下一篇 :10. SpringBoot 整合 Redis

1. 什么是 Jedis

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

2. 使用

  1. 导入依赖

    	<!-- redis 的包 -->
        <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.2.0</version>
        </dependency>
        
        <!-- fastjson -->
        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.73</version>
        </dependency>
    
  2. 测试链接

    使用的三步骤 :连接数据库 → 操作命令 → 断开连接

    /**
     * 测试连接
     */
    
    public class TestPing {
        public static void main(String[] args) {
            // 1. 获取 Jedis 对象,连接数据库
            // 主机号就是 Linux 的主机号
            Jedis jedis = new Jedis("192.168.142.120",6379);
            // jedis 所有命令,就是在 linux 中使用的所有的命令
            // 2. 测试链接,操作命令
            System.out.println(jedis.ping());
        }
    }
    

    点进 Jedis 类
    在这里插入图片描述

  3. 测试结果

    在这里插入图片描述
    连接成功

  4. 简单操作一下前面学的命令

    /**
     * 简单测试一下 String 的命令
     */
    public class TestKey {
        public static void main(String[] args) {
            Jedis jedis = new Jedis("192.168.142.120",6379);
    
            System.out.println("清空数据库 —— " + jedis.flushAll());
            System.out.println("判断某个键是否存在 —— "+jedis.exists("name"));
            System.out.println("新增<name:name> ——"+jedis.set("name","name"));
            System.out.println("新增<password:password> ——"+jedis.set("password","password"));
            System.out.println("所有的键 ——" +jedis.keys("*"));
            System.out.println("删除 password 的键值对 ——"+jedis.del("password"));
            System.out.println("获取 name 的值 ——"+jedis.get("name"));
            System.out.println("清空数据库 —— " + jedis.flushAll());
    
        }
    }
    

    执行结果

    在这里插入图片描述

3. Jedis 操作事务

  1. 事务正常执行,没有异常

    /**
     * 操作事务
     */
    public class TestTX {
        public static void main(String[] args) {
            Jedis jedis = new Jedis("192.168.142.120",6379);
    
            // 伪造数据
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("name","hehe");
            jsonObject.put("sex","male");
            // 先清空数据库
        	jedis.flushDB();
            // 开启事务
            Transaction multi = jedis.multi();
            // 进行事务操作
            // 因为 redis 的事务没有原子性,所以这里使用 try-catch 来保证原子性
            try {
                multi.set("user1", jsonObject.toJSONString());
                multi.set("user2", jsonObject.toJSONString());
                multi.set("user3", jsonObject.toJSONString());
                multi.exec();
            } catch (Exception e) {
                //一旦上面的代码抛出异常,就放弃事务
                multi.discard();
                e.printStackTrace();
            } finally {
                // 输出数据
                System.out.println(jedis.get("user1"));
                // 关闭连接
                jedis.close();
            }
        }
    }
    

    执行结果
    在这里插入图片描述

  2. 事务执行发生异常

    模拟一个运行时异常

    在这里插入图片描述

    单纯在 Redis 的事务中,在发生运行时异常时,是保证不了原子性的,也就是只有发生异常的命令报错,事务中其他命令依旧可以正常执行。

    但是在这里加入了 try-catch 后一旦有异常,就放弃整个事务,就保证了事务的原子性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yuan_404

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

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

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

打赏作者

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

抵扣说明:

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

余额充值