4.Redis客户端的使用
标题 :
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);

源码中,实际也是以队列方式执行.

- 我们在事务开启时,添加了条件.我们认为bookName的值在最后提交时应该没有被其他程序修改过
- 我们开启了另一个客户端修改了bookName的值, 最后我们在exec的时候,返回了失败.(因为bookName已经被其他程序修改了)
- 为什么transaction.Execute()返回了失败(其实这个失败,代表的是事务提交时指定的条件不满足),但是bookName的值还是被设置成了"R语言从入门到实践"。 这个就和redis的事务机制有关了,它不会回滚.所以
database.StringSet("bookName", "R语言从入门到实践");
这条语句还是被执行了.
关于回滚:
- 如果用命令行执行语句,如果语句本身语法有错误.事务会回滚.运行时错误不会回滚.
- 如果用客户端库,它会回滚(因为如果语法错误,你程序都编译不过).对于客户端库而言,它只存在运行时错误.
引用链接
[无]
4.Redis客户端的使用的更多相关文章
- StackExchange.Redis客户端读写主从配置,以及哨兵配置。
今天简单分享一下StackExchange.Redis客户端中配置主从分离以及哨兵的配置. 关于哨兵如果有不了解的朋友,可以看我之前的一篇分享,当然主从复制文章也可以找到.http://www.cnb ...
- c#实现redis客户端(一)
最近项目使用中要改造redis客户端,看了下文档,总结分享一下. 阅读目录: 协议规范 基础通信 状态命令 set.get命令 管道.事务 总结 协议规范 redis允许客户端以TCP方式连接,默认6 ...
- 使用StackExchange.Redis客户端进行Redis访问出现的Timeout异常排查
问题产生 这两天业务系统在redis的使用过程中,当并行客户端数量达到200+之后,产生了大量timeout异常,典型的异常信息如下: Timeout performing HVALS Parser2 ...
- Redis客户端之Spring整合Jedis,ShardedJedisPool集群配置
Jedis设计 Jedis作为推荐的java语言redis客户端,其抽象封装为三部分: 对象池设计:Pool,JedisPool,GenericObjectPool,BasePoolableObjec ...
- 从零开始写redis客户端(deerlet-redis-client)之路——第一个纠结很久的问题,restore引发的血案
引言 正如之前的一篇博文,LZ最近正在从零开始写一个redis的客户端,主要目的是为了更加深入的了解redis,当然了,LZ也希望deerlet客户端有一天能有一席之地.在写的过程当中,LZ遇到了一个 ...
- Redis 客户端配置及示例
一.redis自定义配置节点 <configSections> <section name ="RedisConfig" type="Amy.Toolk ...
- Redis客户端Java服务接口封装
最近在学习Redis并集成到Spring中去,发现Spring的RedisTemplate并不好用,还没有MongoTemplate好用. 而且发现Jedis和ShardedJedis的方法非常多,覆 ...
- "Redis客户端连接数一直降不下来"的有关问题解决
[线上问题] "Redis客户端连接数一直降不下来"的问题解决 前段时间,上线了新的 Redis缓存(Cache)服务,准备替换掉 Memcached. 为什么要将 Memcach ...
- spring整合redis客户端及缓存接口设计(转)
一.写在前面 缓存作为系统性能优化的一大杀手锏,几乎在每个系统或多或少的用到缓存.有的使用本地内存作为缓存,有的使用本地硬盘作为缓存,有的使用缓存服务器.但是无论使用哪种缓存,接口中的方法都是差不多. ...
- 全球领先的redis客户端:SFedis
零.背景 这个客户端起源于我们一个系统的生产问题. 一.问题的发生 在我们的生产环境上发生了两次redis服务端连接数达到上限(我们配置的单节点连接数上限为8000)导致无法创建连接的情况.由于这个系 ...
随机推荐
- 超详细 安装VMware Workstation,并安装WIN10操作系统连接外网 步骤指导
首先下载VMware Workstation15.1版本,我保存在迅雷链接里面,下载速度非常可观. 链接:https://pan.xunlei.com/s/VMRSt6hHMZXEmPZCm6gJcG ...
- 笔记 | pandas之时间序列学习随笔1
1. 时间序列自动生成 ts = pd.Series(np.arange(1, 901), index=pd.date_range('2010-1-1', periods=900)) 最终生成了从20 ...
- 从软件(Java/hotspot/Linux)到硬件(硬件架构)分析互斥操作的本质
先上结论: 一切互斥操作的依赖是 自旋锁(spin_lock),互斥量(semaphore)等其他需要队列的实现均需要自选锁保证临界区互斥访问. 而自旋锁需要xcmpchg等类似的可提供CAS操作的硬 ...
- Vue基础之Vue的模板语法
Vue基础之Vue的模板语法 数据绑定 01 数据绑定最常见的形式就是使用插值表达式(两个大括号!)[也就是小胡子语法!mustache] <body> <!-- Vue.js的应用 ...
- windows激活密钥
密钥来源,微软官方 KMS 客户端安装密钥 | Microsoft Docs Windows Server 2008 R2 操作系统版本 KMS 客户端安装程序密钥 Windows Server 20 ...
- c#使用谷歌身份验证GoogleAuthenticator
此功能相当于给系统加了个令牌,只有输入对的一组数字才可以验证成功.类似于QQ令牌一样. 一丶创建最核心的一个类GoogleAuthenticator 此类包含了生成密钥,验证,将绑定密钥转为二维码. ...
- 苹果 M1 芯片 OpenSSL 性能测试
Apple M1(MacBook Air 2020) type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes md2 0.00 0.00 0.00 ...
- 线上一次大量 CLOSE_WAIT 复盘
https://mp.weixin.qq.com/s/PfM3hEsDa3CMLbbKqis-og 线上一次大量 CLOSE_WAIT 复盘 原创 ms2008 poslua 2019-07-05 最 ...
- LOJ10081
USACO 201 Jan. Gold Farmer John 正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到 T 个城镇 ,编号为 1 到 T.这些城镇之间通过 R 条道路(编号为 ...
- COGS 307 模拟退火
307. [HAOI2006] 均分数据 ★★ 输入文件:data.in 输出文件:data.out 简单对比时间限制:3 s 内存限制:128 MB [问题描述] 已知N个正整数:A ...