当前位置:首页 > 数据库 > 正文内容

Redis中有业务吗?有何不同?

邻居的猫1个月前 (12-09)数据库612

与联系型数据库业务的差异

Redis业务是指将多条指令参加行列,一次批量履行多条指令,每条指令会按次序履行,业务履行过程中不会被其他客户端发来的指令所打断。也便是说,Redis业务便是一次性、次序性、排他性的履行一个行列中的一系列指令。

Redis业务和联系型数据库的业务不太相同,它不确保原子性,也没有阻隔等级的概念。

业务不确保原子性,可是Redis指令自身是原子性的

  1. Redis业务没有阻隔等级的概念
    批量操作在发送 EXEC 指令前被放入行列缓存,并不会被实践履行,也就不存在业务里的查询要看到本业务的更新或其它业务的修正更新操作的问题。(Mysql里的业务的句子不是放入行列,而是直接履行)
  2. Redis不确保原子性
    Redis中,单条指令是原子性履行的,但业务不确保原子性,且没有回滚。业务中恣意指令履行失利,其他的指令仍会被履行。

Redis业务的运转流程

Redis业务相关指令

  • Multi :开端业务
  • Exec :履行业务中的一切指令,即提交;
  • discard :抛弃业务;和回滚不相同,Redis业务不支撑回滚。
  • WATCH:监督Key改动,用于完成达观锁。假如监督的Key的值改动,业务最终会履行失利。
  • UNWATCH:抛弃监督。

没有阻隔等级

当业务敞开时,业务期间的指令并没有履行,而是参加行列,只要履行EXEC指令时,业务中的指令才会依照次序履行,也便是说业务间就不会存在数据脏读、不可重复读、幻读的问题,因而就没有阻隔等级。

业务不确保原子性

如上图所示,在经过EXEC履行业务时,其间指令履行失利不会影响到其他指令的履行,因而并没有确保一起成功和一起失利的原子操作,虽然这样,Redis业务中也没有供给回滚的支撑

官方理由为:确保Redis的功用

  • 事实上假如运用Redis指令语法过错,或是将指令运用在过错的数据类型键上(如对字符串进行加减乘除等),然后导致业务数据有问题,这种状况认为是编程导致的过错,应该在开发过程中处理,防止在出产环境中产生;
  • 因为不必支撑回滚功用,Redis内部简略化,并且还比较快;

大都业务失利是由语法过错或许数据结构类型过错导致的,语法过错阐明在指令入队前就进行检测的,而类型过错是在履行时检测的,Redis为提高功用而选用这种简略的业务,这是不同于联系型数据库的,特别要注意区别。Redis之所以坚持这样简易的业务,彻底是为了确保高并发下的核心问题——功用。

语法过错(编译器过错)

在敞开业务后,A的转出操作指令打成了DECRBYa,最终会导致业务提交失利,一切指令都不会履行,A、B保存原值。

127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> DECRBYa A 500
(error) ERR unknown command 'DECRBYa', with args beginning with: 'A' '500'
127.0.0.1:6379(TX)> INCRBY B 500
QUEUED
127.0.0.1:6379(TX)> EXEC
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379> mget A B
1) "1000"
2) "100"
127.0.0.1:6379>

类型过错(运转时过错)

在运转时检测类型过错,此刻业务并没有回滚,而是越过过错指令持续履行, 成果B值改动、A保存原值。

小结

  • 当业务中指令语法运用过错时,最终会导致业务履行不成功,即业务内一切指令都不履行;
  • 当业务中指令常识逻辑过错,就比方给字符串做加减乘除操作时,只能在履行过程中发现过错,这种业务履行中失利的指令不影响其他指令的履行。

运用WATCH完成达观锁

WATCH经过监督指定Redis Key,假如没有改动,就履行成功,假如发现对应值产生改动,业务就会履行失利,如下图:

三种方法能够撤销监督:

  • 业务履行之后,不论是否履行成功还好是失利,都会撤销对应的监督;
  • 当监督的客户端断开衔接时,也会撤销监督;
  • 能够手动UNWATCH撤销一切Key的监督;

面试题专栏

Java面试题专栏已上线,欢迎拜访。

  • 假如你不知道简历怎样写,简历项目不知道怎样包装;
  • 假如简历中有些内容你不知道该不该写上去;
  • 假如有些归纳性问题你不知道怎样答;

那么能够私信我,我会尽我所能协助你。

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=552

标签: Redis
分享给朋友:

“Redis中有业务吗?有何不同?” 的相关文章

MySQL主从中仿制账号密码能够加密吗?

MySQL主从中仿制账号密码能够加密吗?

建立MySQL主从仿制后,你会发现仿制账号的暗码是明文存储在mysq.mysql.slave_master_info这张体系表的User_password字段傍边,前期MySQL版别中,账号暗码存储在master.info文件中。如下事例所示: mysql> select * from mys...

zookeeper基础知识共享(一)

zookeeper基础知识共享(一)

写在前面 今日来学习Zookeeper部分的常识,之后会学习hbase的常识。 Zookeeper简介 Zookeeper是一个高效的分布式和谐服务,能够供给以下功用: 装备信息办理 命名 分布式同步 集群办理 数据库切换等服务 它不合适用来存储很多信息,而是用于存储一些装备信息、发布与订阅等少数数...

大数据应用技术,大数据应用技术概述

大数据应用技术,大数据应用技术概述

大数据应用技术是指利用大数据技术进行数据采集、存储、处理、分析和挖掘,从而为企业或组织提供决策支持、优化业务流程、提升运营效率的一系列技术手段和方法。随着信息技术的飞速发展,大数据已经成为企业获取竞争优势、提升创新能力的重要资源。大数据应用技术主要包括以下几个方面:1. 数据采集:通过多种途径收集结...

数据库复制,数据库复制的概述

数据库复制,数据库复制的概述

数据库复制是指将数据库从一个位置复制到另一个位置的过程。这通常用于备份、灾难恢复、数据迁移、负载均衡等目的。复制可以是完全复制,也可以是部分复制,取决于复制的目的和需求。复制的过程可以手动进行,也可以通过自动化工具进行。手动复制通常需要停机,而自动化工具可以在不停机的情况下进行复制。自动化工具通常使...

大数据教育培训班,张璁怎么读

大数据教育培训班,张璁怎么读

1. 传智教育 课程内容:Java大数据培训、大数据开发培训、大数据分析培训、大数据开发工程师培训。 特色:提供企业级真实大数据业务砛n2. 尚硅谷 课程内容:大数据开发培训课程、大数据分析培训课程等。 特色:多年大数据课程培训经验,为企业输送大量大数据工程师人才。 3...

古籍数据库,传承与创新的桥梁

古籍数据库,传承与创新的桥梁

以下是几个主要的古籍数据库和在线阅读平台,供您参考:1. 识典古籍 特点:提供免费公开、稳定、快速、方便的搜索和阅读古籍的服务,涵盖儒家经典、道家经典、文学经典等丰富内容。用户可以通过关键词或高级检索功能查找感兴趣的古籍,还可以参与用户反馈和协议查看。2. 中国国家图书馆...