当前位置:网站首页>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事务的执行不是原子的。
事务可以理解为打包的批处理执行脚本,但批处理指令不是原子化操作。中间指令的故障不会导致前一条指令回滚,也不会导致后续指令不回滚。
边栏推荐
- Apache DButils使用注意事项--with modifiers “public“
- C语言教程(二)-printf及c自带的数据类型
- 【mysql 提高查询效率】Mysql 数据库查询好慢问题解决
- Swordsman Offer Special Assault Edition --- Day 3
- C语言的文件操作(一)
- Unity mobile game performance optimization series: performance tuning for the CPU side
- matlab simulink欠驱动水面船舶航迹自抗扰控制研究
- Interview Redis High Reliability | Master-Slave Mode, Sentinel Mode, Cluster Cluster Mode
- Information System Project Manager Core Test Site (55) Configuration Manager (CMO) Work
- 剑指offer专项突击版 --- 第 3 天
猜你喜欢

Redis进阶 - 缓存问题:一致性、穿击、穿透、雪崩、污染等.

Moment Pool Cloud quickly installs packages such as torch-sparse and torch-geometric
![2022-07-30:以下go语言代码输出什么?A:[]byte{} []byte;B:[]byte{} []uint8;C:[]uint8{} []byte;D:[]uin8{} []uint8。](/img/7f/130a9b733855a2bab07d26ffda2c49.png)
2022-07-30:以下go语言代码输出什么?A:[]byte{} []byte;B:[]byte{} []uint8;C:[]uint8{} []byte;D:[]uin8{} []uint8。

剑指offer基础版--- 第23天

C语言实验三 选择结构程序设计

剑指offer专项突击版 ---- 第2天

About the problems encountered by Xiaobai installing nodejs (npm WARN config global `--global`, `--local` are deprecated. Use `--location=glob)

MySQL8.0.26安装配置教程(windows 64位)

数据库上机实验5 数据库安全性

mysql uses on duplicate key update to update data in batches
随机推荐
剑指offer基础版 --- 第22天
.NET-6.WinForm2.NanUI learning and summary
C语言教程(二)-printf及c自带的数据类型
Mysql——字符串函数
基于web3.0使用钱包Metamask的三方登陆
工作流编排引擎-Temporal
Paginate the list collection and display the data on the page
剑指offer基础版 ----第31天
第7章 网络层第3次练习题答案(第三版)
【一起学Rust】Rust学习前准备——注释和格式化输出
datagrip带参sql查询
[MQ I can speak for an hour]
.NET-9. A mess of theoretical notes (concepts, ideas)
C语言如何分辨大小端
剑指offer专项突击版 ---- 第1天
有了MVC,为什么还要DDD?
Distributed transaction processing solution big PK!
Mysql application cannot find my.ini file after installation
110 MySQL interview questions and answers (continuously updated)
Simple command of mysql