加入收藏 | 设为首页 |

ope体育官网-redis业务不具有回滚机制,那么它是怎么进行业务操控的

海外新闻 时间: 浏览:374 次

redis业务

任何数据库都要有一套自己的业务操控机制,redis业务是一次能够履行多个指令,它的实质是一组指令的调集。一个业务中一切的指令都会被序列化,在业务履行的进程中会依照次序履行行列中的指令。其它客户端提交的指令恳求会比及业务履行结束再履行。

总的来说:redis业务便是一次性、次序性、排他性的履行一个行列中的一系列指令。

rope体育官网-redis业务不具有回滚机制,那么它是怎么进行业务操控的edis业务和其它数据库业务的差异:

1、redis业务是分为三个阶段:开端业务、指令入队、履行业务。

2、redis业务不具有阻隔等级的概念:redis在发送exec指令之前,指令操作仅仅被放入到行列缓存傍边,并不会被实践履行,因而也就不能相似联系ope体育官网-redis业务不具有回滚机制,那么它是怎么进行业务操控的型数据中,在业务内查询现已改变的操作,业务外的客户端更不能查询到业务内的数据。

3、redis业务是不确保原子性的:redis业务只确保在指令格局只要在都正确的情况下才会都履行,要不就都不履行指令。可是业务的全体是不确保原子性的,且没有回滚,当业务中恣意一个指令履行失利ope体育官网-redis业务不具有回滚机制,那么它是怎么进行业务操控的,其他的指令仍然会履行。

redis指令语法结构:

1、watch key1 key2等等:监督一个或许多个KEY,如果在业务履行的时分,key的值被其它指令改动,则业务被打断,悉数不履行,redis经过该机制完结业务的达观锁。

2、multi:用于指定redis业务的开端。

3、exec:用于指定redis业务开端履行(次序、一次性履行一切业务中的指令),一旦履行exec,前面加的监控锁都会被撤销。

4、discard:用于撤销业务。抛弃业务中的一切指令。

5、unwatch:撤销对watch中key的监控。


下面咱们经过实例来详细分析redis业务的履行进程:

例1、redis正常业务流程:

multi
set key1 hello
set key2 free
set key3 world
get key2
exec

redis正常流程


例2、撤销业务,代码如下:

multi
set key1 hello_1
set key2 free_1
snaiveet key3 world_1
discard
get key3

redis撤销业务


例3、redis业务中某个指令犯错(即不存在的指令,不是语法犯错)时,业务中的一切指令都不会履行,代码如下:

multi
set key1 hello_1
setok key2 free_1
set key3 world_1
get key3
exec

redis业务


​例4、redis业务中存在某个指令具有语法性过错,履行exec时,其它指令照样履行,代码如下:

multi
incr key1
set key2 free_1
set key3 world_1
get key3
exec

redis业务


例5、使用watch监控某个key值的ope体育官网-redis业务不具有回滚机制,那么它是怎么进行业务操控的改变,来做redis业务的达观锁。模仿keya账户中有100块钱,keyb账户有20块钱,然后a向b转了50块钱。

首要增加测试数据,代码如下:

set keya 100
set keyb 20
watch keya
multi
decrby keya 50
incrby keyb 50
exec
get keya

redisope体育官网-redis业务不具有回滚机制,那么它是怎么进行业务操控的 watch

然后,咱们翻开第二个客户端,在业务履行(exec)之前,对a账户提早削减50块钱,看下watch的达观锁机制是否收效,代码如下:

redis watch

在redis业务提交时,如果在业务进入缓存行列的进程中,watch指令监控key的值发生了改变,则业务中的指令将都不会被履行。一起回来提示业务使用者业务履行失利。