Basic Tutorials of Redis(8) -Transaction

  Data play an important part in our project,how can we ensure correctness of the data and prevent the data

from error.In relational database,we are famillar with the usage of transaction.

/rollback

  But there are some differences between the Redis and relational database.Let's introduce the commands

first.There are only 5 commands to use while you use the transaction in redis.

  I want to take an example to show you how to use the transaction.So here is the backgroud.There are three

persons and they want to buy the apple from the shop.The key for buying apple is the amount.

  For this example,I use the hash to store the infomation of 

example's initial data.

  Let's start to finish this example.The first step is to initialize the data.

hmset user- name tom money - name jack money - name paul money - name apple price amount totalmoney

  Tom wants to buy the apple,so the product-1's amount should decrease by one,tom's money should decrease

by 150 and the totalmoney should increase by 150.The action buy includes three steps.We should check up the

product-1 with buy action.

watch product-- amount -- money -

  You will find that after the command   ,the commands before   all return queued.It means that those

commands store in a queue.After exec command,the client send this queue to the server and execute the commands.

But this is a normal situation that the amount is not changed before the transaction execute.

this,we need another client to imitate paul takes first.Before execute the transaction of jack's action,we decrease the

amount of product-1 to imitate 

and the three commands didn't execute too.

  This example shows the basic usage of transaction in redis.It is suitable for many questions.

 can help you to abort the current transaction.After executing the command discard.At this time

  Now I will show you how to use the transaction in StackExchange.Redis.

db.HashSet(, HashEntry[] { HashEntry(,), HashEntry(, db.HashSet(,), db.HashSet(,), db.HashSet(, HashEntry[] { HashEntry(,), HashEntry(,), HashEntry(, db.StringSet(, tran = tran.AddCondition(Condition.HashEqual(,, tran.HashDecrementAsync(, tran.HashDecrementAsync(,, tran.StringIncrementAsync(, Console.WriteLine(.Format(,tran.Execute() ? : tran2 = tran.AddCondition(Condition.HashEqual(, tran.HashDecrementAsync(, tran.HashDecrementAsync(, tran.StringIncrementAsync(, db.HashDecrement(, Console.WriteLine(.Format(,tran.Execute() ? : ));

  Debuging the code,you will see the result as follow.

  

  The next post of this series is the RedisHelper.Thanks for your reading
 

相关文章

在笔者近 3 年的 Java 一线开发经历中,尤其是一些移动端、用...
这一篇文章拖了有点久,虽然在项目中使用分布式锁的频率比较...
本文梳理总结了一些 Java 互联网项目中常见的 Redis 缓存应用...
书接上回,消息通知系统(notification-system)作为一个独立...
Redis 是目前互联网后端的热门中间件之一,在许多方面都有深...
在Java Spring 项目中,数据与远程数据库的频繁交互对服务器...