Redis事务处理的操作方法是什么

技术Redis事务处理的操作方法是什么本篇文章给大家分享的是有关Redis事务处理的操作方法是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、简介

这篇文章讲的是Redis交易处理的操作方法,边肖觉得挺实用的,所以想分享给大家学习。希望大家看完这篇文章能有所收获。我不多说,让我们和边肖一起看看。

一、简介

Redis采用了乐观锁方式进行事务控制,它使用watch命令来监视给定的键。当exec(提交事务)时,如果被监控的键在调用watch后发生了变化,整个事务将失败。您也可以调用watch多次监控多个按键。请注意,手表的钥匙对整个连接都有效。如果连接断开,监控和事务将自动清除。当然,exec、discard和unwatch命令将清除连接中的所有监控。

Redis保证事务中的所有命令要么被执行,要么不被执行(原子性)。如果客户端在发送EXEC命令之前断开连接,Redis将清空事务队列,事务中的所有命令都不会执行。一旦客户端发送了EXEC命令,所有的命令都会被执行,即使客户端后来断开了连接,因为所有要执行的命令都已经记录在Redis中了。

常用指令:

多重未结交易。

Exec提交事务。

放弃取消交易。

观察监控,如果监控值发生变化,提交时交易会失败。

取消监视。

二、模拟使用

模拟转账操作

Redis事务处理的操作方法是什么

打开事务后,所有操作将进入一个队列,并在提交时一起执行。

模拟取消事务

redis交易太简单,没有回滚,只有注销。

Redis事务处理的操作方法是什么

当队列中的语句出现错误时,事务会自动取消。

Redis事务处理的操作方法是什么

10-1010乐观锁,顾名思义就是非常乐观。每次得到数据,我都认为别人不会修改,所以不会锁定。在此期间,数据可以被其他人随意读取,但在更新时,我会判断在此期间是否有其他人更新过数据,我可以使用版本号等机制。

版本号机制是乐观锁定中最常用的方法,即在表中增加一个版本号字段,在更新前检查以获取版本号,然后将其更新为update语句的where条件。如果数据在获取版本号后更新前发生了变化,那么更新会失败,因为最后更新了0条数据,如果java后台获取的更新号为0,则意味着更新失败并出现并发问题,然后再做具体处理。

乐观锁使用演示

开始监控,开始交易,执行语句。

Redis事务处理的操作方法是什么

1.添加测试数据语句

Redis事务处理的操作方法是什么

00-1010在这里我们可以看到事务的执行失败了。a变成了666。

Redis事务处理的操作方法是什么

00-1010/*实现一个简单的基于reids的多线程抢票操作。

*密钥延迟乐观锁定的应用*/

publicclassSecondsKillDemo02{

//定义票务逻辑。

n

bsp; public static void KillTicket() {
        //1.连接
        Jedis jedis = JedisDataSource.getConnection();
        //2.监控reids中指定的key
        String a = jedis.get("a");
        if (a == null || Integer.valueOf(a) == 0)
            throw new RuntimeException("没票了");
        jedis.watch("a", "b");
        //3.开启事务执行业务
        Transaction multi = jedis.multi();
        try {
            multi.decr("a");
            multi.incrBy("b", 100);
            //4.提交事务
             multi.discard();
            System.out.println("ok");
        } catch (Exception e) {
            multi.exec();
        } finally {
            //5.取消监控
            jedis.unwatch();
            //6.释放
            jedis.close();
        }
    }
 
    public static void main(String[] args) {
        //1.定义初始数据
        Jedis jedis = JedisDataSource.getConnection();
        jedis.set("a", "1");
        jedis.set("b", "0");
        //2.创建多个线程,在线程中执行抢票
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                KillTicket();
            }
        });
        Thread t2 = new Thread(new Runnable() {
            @Override
            public void run() {
                KillTicket();
            }
        });
        t1.start();
        t2.start();
 
    }
}

以上就是Redis事务处理的操作方法是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/37089.html

(0)

相关推荐

  • DM7 RAC数据库怎样恢复成单机数据库

    技术DM7 RAC数据库怎样恢复成单机数据库本篇文章为大家展示了DM7 RAC数据库怎样恢复成单机数据库,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。DM7 RAC数据库恢复成单

    攻略 2021年11月30日
  • 螓怎么读,在问大侠荣威5501.8启螓版

    技术螓怎么读,在问大侠荣威5501.8启螓版你的是1螓怎么读。8T的吗带T的保养要贵一些,机油有讲究的,一定要按时换机油。另外最好热车和冷车。5年左右可能要换了,好几万噢,另外带T的发动机转速上去涡轮介入后发动机噪音会大

    生活 2021年10月24日
  • MySQL中Sandbox怎么安装

    技术MySQL中Sandbox怎么安装这篇文章主要介绍MySQL中Sandbox怎么安装,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 一 sandbox是什么?MyS

    攻略 2021年11月1日
  • 靶机-Hackademic-RTB1

    技术靶机-Hackademic-RTB1 靶机-Hackademic-RTB1Hackademic-RTB1
    信息搜集
    nmap 扫描,22 和 80 端口打开。nmap 警告 80 的 http 有风

    礼包 2021年12月14日
  • MongoDB可视化工具的使用方法

    技术MongoDB可视化工具的使用方法今天就跟大家聊聊有关MongoDB可视化工具的使用方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 MongoDB 是一种

    攻略 2021年11月3日
  • 赞美柳树的句子最短的,用简单一句话赞美倒垂柳的句子

    技术赞美柳树的句子最短的,用简单一句话赞美倒垂柳的句子1.春天是个温柔的小女孩,她跳着舞来了赞美柳树的句子最短的。这时的柳树发芽了,那些嫩绿的小芽犹如一个个刚出生的小宝宝探出小小的脑袋,看看这陌生的世界。一阵春风从远处吹

    生活 2021年10月22日