《redis in action》redis事务和管道写点笔记关注共 941字,需浏览 2分钟 ·2021-04-13 05:20 在之前的文章中我们大概学习了redis的安全性,主要就是持久化和夸机备份。这里我们再来学习一下redis的安全和性能问题。这块说的性能问题主要就是说客户端与服务端的通信,而不是说redis的服务器的机器的问题。我们在之前学习了redis的事务(multi/exec),当时我们说redis事务是没有原子性的,所有的命令都是先发送到服务端,然后缓存起来,然后再执行exec的时候才进行统一执行的,如果exec之前发生了错误,那么所有提交的命令将不会被redis执行。当然如果如果命令执行了一半之后报错了,那么已经执行的命令也不会发生回滚。而且我们当时也说过redis的事务是阻塞的,直到exec执行完毕才能进行其他客户端发来的命令。那么redis事务的问题就是操作指令是一个个发到服务端,然后缓存,在客户端调用exec的时候再进行执行。那么有没有一种方式让这些命令一次性发送到服务端,然后一起执行?答案是有得。这就是传说中的管道。管道不是redis提供的命令,redis只是提供了事务相关的命令,管道是客户端的行为。管道分为事务管道和非事务管道,事务管道就是在管道中进行multi开启事务,非事务管道仅仅是批量执行命令。因此性能就会有差别。通过实践测试,使用管道比一般传统模式效率高4-5倍,这块和网络有关系。了解了管道和事务的联系,我们就知道我们在项目中应该尽可能使用管道,尤其是命令比较多的时候,除此之外,对于一些具有并发特征的数据应该采用事务管道,因为事务管道具有阻塞的功能,也就是串行。在关系型数据库中事务都是采用加锁的方式进行的,redis并没有采用那种锁的方式,为什么这样的原因是redis事务的时间是没有限制的,也不知道前一个操作何时完成,redis不想让客户端等待,而是让客户端尽早知道。另外watch的乐观锁机制也是被动的去监听,如果出现了变化,那么就尽早让客户端知道改变已经发生,然后进行相关的策略,一句话就是为了快。 浏览 30点赞 评论 收藏 分享 手机扫一扫分享分享 举报 评论图片表情视频评价全部评论推荐 Redis in ActionRedis in Action0Redis in ActionRedis is an innovative data tool that offers more 电子书-Redis实战 Redis In Action免费分享程序员实战基地0【高频 Redis 面试题】Redis 事务是否具备原子性?漫画编程0Redis云数据库Redis是网宿云推出的一种在线缓存和键值存储服务,支持主从双机热备和数据持久化存储,为您提供专业的数据备份、恢复、在线扩容、监控、告警及容灾等数据库服务。RedisRedis0RedisRedis0Redis中的管道Pipeline操作程序源代码0RedisRedis即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志RedisRedis即远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的APIredis是一个key-value存储系统。和Me点赞 评论 收藏 分享 手机扫一扫分享分享 举报