使用过Redis事务的应该清楚,Redis事务实现是通过打包多条命令,单独的隔离操作,事务中的所有命令都会按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务中的命令要么全部被执行,要么全部都不执行(原子操作)。但其中有命令因业务原因执行失败并不会阻断后续命令的执行,且也无法回滚已经执行过的命令。如果想要实现和MySQL一样的事务处理可以使用Lua脚本来实现,Lua脚本中可实现简单的逻辑判断,执行中止等操作。
2024年04月23日
使用过Redis事务的应该清楚,Redis事务实现是通过打包多条命令,单独的隔离操作,事务中的所有命令都会按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务中的命令要么全部被执行,要么全部都不执行(原子操作)。但其中有命令因业务原因执行失败并不会阻断后续命令的执行,且也无法回滚已经执行过的命令。如果想要实现和MySQL一样的事务处理可以使用Lua脚本来实现,Lua脚本中可实现简单的逻辑判断,执行中止等操作。
2024年04月23日
redis如何实现事务性?
本质也是乐观锁。
在redis客户端执行:
$money = GET key$money = $money - $diff
2024年04月23日
借助redis Stream 数据结构实现消息队列,异步完成订单创建,其中涉及到了缓存(击穿,穿透,雪崩),锁(Redisson),并发处理,异步处理,Lua脚本
2024年04月23日
一.Redis集群会有写操作丢失吗?为什么?
Redis并不能保证数据的强一致性,这意味着在实际中集群在特点条件下可能会丢失写操作。
二.Redis集群之间是如何复制的?
2024年04月23日
docker手动更新容器的流程是:pull更新镜像、stop停止容器、rm删除容器、run重新运行容器(只要运行命令正确,并不会删除本地配置信息)。不过运行的容器多了之后,手动更新就繁琐了。Watchtower就是为了解决这个问题:
2024年04月23日
Redis实例运行在单独的进程中,应用系统(Redis客户端)通过Redis协议和Redis Server 进行交互。在Redis 协议之上,客户端和服务端可以实现多种类型的交互模式:串行请求/响应模式、双工的请求/响应模式(pipeline)、原子化的批量请求/响应模式(事务)、发布/订阅模式、脚本化的批量执行(Lua脚本)。
2024年04月23日