码迷,mamicode.com
首页 > 其他好文 > 详细

4.Redis客户端的使用

时间:2019-08-24 22:57:45      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:begin   返回   模拟   wait   cond   multiple   api   exe   console   

标题 :
4.Redis客户端的使用
目录 :
Redis
序号 :
4

        Console.WriteLine($"北京和天津之间的距离是:{distance}公里");

#### 事务csharp
Console.WriteLine(Environment.NewLine);
Console.WriteLine("----------------------事务----------------------");
string bookName = database.StringGet("bookName");
Console.WriteLine(bookName);
?
?
var transaction = database.CreateTransaction();
transaction.AddCondition(Condition.StringEqual("bookName", bookName));
Console.WriteLine("transaction begin");
?
?
//模拟开启另外一个客户端修改bookName的值,这时Condition.StringEqual("bookName", bookName) 条件就不满足,事务应当失败
var watingHandle = new ManualResetEvent(false);
Task.Factory.StartNew(() =>
{
var other = ConnectionMultiplexer.Connect(config).GetDatabase(0);
other.StringSet("bookName", "从入门到变黄");
Console.WriteLine("我是另外一个客户端,我已经将bookName的值修改为了:"+other.StringGet("bookName"));
watingHandle.Set();
});
watingHandle.WaitOne();
?
?
?
database.StringSet("bookName", "R语言从入门到实践");
var result = transaction.Execute();
Console.WriteLine("事务提交结果:" + result);
?
bookName = database.StringGet("bookName");
Console.WriteLine(bookName);
![](https://www.showdoc.cc/server/api/common/visitfile/sign/cdc830c067ddccf82a36adf67667df37?showdoc=.jpg) ? 源码中,实际也是以队列方式执行. ![](https://www.showdoc.cc/server/api/common/visitfile/sign/b6b27d989fb4755b58e0eea73feed333?showdoc=.jpg) - 我们在事务开启时,添加了条件.我们认为bookName的值在最后提交时应该没有被其他程序修改过 - 我们开启了另一个客户端修改了bookName的值, 最后我们在exec的时候,返回了失败.(因为bookName已经被其他程序修改了) - 为什么transaction.Execute()返回了失败(其实这个失败,代表的是事务提交时指定的条件不满足),但是bookName的值还是被设置成了"R语言从入门到实践"。 这个就和redis的事务机制有关了,它不会回滚.所以shell
database.StringSet("bookName", "R语言从入门到实践");
```
这条语句还是被执行了.
?

关于回滚:
  • 如果用命令行执行语句,如果语句本身语法有错误.事务会回滚.运行时错误不会回滚.
  • 如果用客户端库,它会回滚(因为如果语法错误,你程序都编译不过).对于客户端库而言,它只存在运行时错误.
    ?

    引用链接

    [无]

4.Redis客户端的使用

标签:begin   返回   模拟   wait   cond   multiple   api   exe   console   

原文地址:https://www.cnblogs.com/gytangyao/p/11406121.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!