当前位置:网站首页>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事务的执行不是原子的。
事务可以理解为打包的批处理执行脚本,但批处理指令不是原子化操作。中间指令的故障不会导致前一条指令回滚,也不会导致后续指令不回滚。
边栏推荐
猜你喜欢

面试官问我TCP三次握手和四次挥手,我真的是

mysql uses on duplicate key update to update data in batches

数据库上机实验7 数据库设计

MySQL optimization slow log query

Why use Flink and how to get started with Flink?

STM32 - DMA

数据库学习笔记
![[mysql improves query efficiency] Mysql database query is slow to solve the problem](/img/fa/502a2efdd37508f15541558851a254.png)
[mysql improves query efficiency] Mysql database query is slow to solve the problem

Lock wait timeout exceeded解决方案

有了MVC,为什么还要DDD?
随机推荐
MySQL8--Windows下使用压缩包安装的方法
【LeetCode-SQL每日一练】——2. 第二高的薪水
Redis的初识
matlab abel变换图片处理
Simple read operation of EasyExcel
账号或密码多次输入错误,进行账号封禁
MySQL_关于JSON数据的查询
【MQ我可以讲一个小时】
Information System Project Manager Core Test Site (55) Configuration Manager (CMO) Work
.NET-9. A mess of theoretical notes (concepts, ideas)
剑指offer专项突击版 ---- 第 6 天
【一起学Rust】Rust学习前准备——注释和格式化输出
C语言教程(二)-printf及c自带的数据类型
[mysql improves query efficiency] Mysql database query is slow to solve the problem
MYSQL下载及安装完整教程
C语言如何分辨大小端
[MQ I can speak for an hour]
Kubernetes 证书可用年限修改
C语言实验四 循环结构程序设计(一)
docker安装postgresSQL和设置自定义数据目录