当前位置:网站首页>Redis 事务学习有感
Redis 事务学习有感
2022-07-31 05:09:00 【黎燃(主号)】
Redis
远程字典服务器(redis)是由Salvatore Sanfilippo编写的键值存储系统。它是一个跨平台的非关系数据库。
Redis是一个用ANSI C语言编写的开源键值数据库,符合BSD协议,支持网络,可以基于内存、分布式和可选持久性,并提供多种语言的API。
Hash
Redis hash是字符串类型的字段和值的映射表。哈希特别适合存储对象。
redis中的每个哈希可以存储232-1个键值对(超过40亿)。
127.0.0.1:6379> HMSET runoobkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
OK
127.0.0.1:6379> HGETALL runoobkey
1) "name"
2) "redis tutorial"
3) "description"
4) "redis basic commands for caching"
5) "likes"
6) "20"
7) "visitors"
8) "23000"
pub/sub
Redis发布/订阅(pub/sub)是一种消息通信模式:发送方(pub)发送消息,订阅者(sub)接收消息。
Redis客户端可以订阅任意数量的频道。
下图显示了通道1与订阅此通道的三个客户端client2、client5和client1之间的关系:
当通过publish命令将新消息发送到通道1时,该消息将发送到订阅该消息的三个客户端:
Redis 事务
Redis事务可以一次执行多个命令,有以下三个重要保证:
批处理操作在发送exec命令之前放入队列缓存。
收到exec命令后,输入事务执行。事务中任何命令的执行都失败,其余命令仍在执行。
在事务执行期间,其他客户端提交的命令请求不会插入到事务执行命令序列中。
交易从开始到执行经历以下三个阶段:
启动事务。
命令加入团队。
执行交易。
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUED
redis 127.0.0.1:6379> GET book-name
QUEUED
redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUED
redis 127.0.0.1:6379> SMEMBERS tag
QUEUED
redis 127.0.0.1:6379> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"
2) "C++"
3) "Programming"
单个redis命令的执行是原子的,但redis没有添加任何机制来维护事务的原子性,因此redis事务的执行不是原子的。
事务可以理解为打包的批处理执行脚本,但批处理指令不是原子化操作。中间指令的故障不会导致前一条指令回滚,也不会导致后续指令不回滚。
边栏推荐
猜你喜欢
Unity resources management series: Unity framework how to resource management
MySQL_关于JSON数据的查询
mysql uses on duplicate key update to update data in batches
On-line monitoring system for urban waterlogging and water accumulation in bridges and tunnels
面试官问我TCP三次握手和四次挥手,我真的是
面试官:生成订单30分钟未支付,则自动取消,该怎么实现?
The interviewer asked me how to divide the database and the table?Fortunately, I summed up a set of eight-part essays
剑指offer基础版--- 第23天
MySQL window function
Refinement of the four major collection frameworks: Summary of List core knowledge
随机推荐
有了MVC,为什么还要DDD?
Temporal线上部署
Goodbye to the cumbersome Excel, mastering data analysis and processing technology depends on it
tf.keras.utils.pad_sequences()
剑指offer基础版 --- 第22天
Distributed Transactions - Introduction to Distributed Transactions, Distributed Transaction Framework Seata (AT Mode, Tcc Mode, Tcc Vs AT), Distributed Transactions - MQ
2022-07-30:以下go语言代码输出什么?A:[]byte{} []byte;B:[]byte{} []uint8;C:[]uint8{} []byte;D:[]uin8{} []uint8。
剑指offer专项突击版 ---- 第2天
Simple command of mysql
MySQL(更新中)
Minio upload file ssl certificate is not trusted
剑指offer基础版 ---- 第27天
可点击也可直接复制指定内容js
分布式事务——分布式事务简介、分布式事务框架 Seata(AT模式、Tcc模式、Tcc Vs AT)、分布式事务—MQ
第7章 网络层第2次练习题答案(第三版)
Lock wait timeout exceeded解决方案
matlab abel变换图片处理
C语言指针详解
【MQ我可以讲一个小时】
运用flask框架发送短信验证码的流程及具体代码