Redis 小白指南(三)- 事务、过时、消息通知、管道和优化内存空间

Redis 小白指南(三)- 事务、过时、消息通知、管道和优化内存空间

简介

  《Redis 小白指南(一)- 简介、安装、GUI 和 C# 驱动介绍》 讲的是 Redis 的介绍,以及如何在 Windows 上安装并使用,一些 GUI 工具和本身简单封装的 RedisHelper。html

  《Redis 小白指南(二)- 聊聊五大类型:字符串、散列、列表、集合和有序集合》讲的是 Redis 中最核心的内容,最经常使用的就是和数据类型打交道。前端

 

目录

  • 事务
  • 过时时间
  • 消息通知
  • 管道
  • 优化内存空间

 

事务

  事务是一组命令的集合,事务和命令同样都是 Redis 的最小执行单位。即一个事务中的命令,要么都执行,要么都不执行。能够思考关系型数据库中的事务特性 ACID:git

    (1)原子性(Atomicity):在事务结束时,其中包含的更新处理要么所有执行,要么彻底不执行。github

    (2)一致性(Consistency):事务中包含的处理,要知足数据库提早设置的约束,也称完整性。redis

    (3)隔离性(lsolation):保证不一样事务以前互不干扰的特性。数据库

    (4)持久性(Durability):事务一旦结束,DBMS 会保证该时点的数据状态得以保存的特性,也称耐久性。设计模式

 

  Redis 能够保证一个事务中的命令依次执行而不会被其它命令插入。如:Client A 须要执行多条指令,同时 Client B 也执行多条指令,由于网络传输或者时间等因素形成指令发送到 Redis 服务器的顺序有前后,即有可能会出现 A 发送的指令和 B 发送的指令造成了交叉,使用事务就能够避免这种状况。缓存

  遗憾的是,Redis 不支持回滚。服务器

 

MULTI    //开启事务的指令

EXEC    //执行事务,依次执行

 

  当客户端发送了 EXEC 的指令后,即便客户端此时忽然断开与服务器的连接,事务中的操做依然会依次执行,由于他们都已经被缓存到 Redis 事务的队列中了。网络

 

过时时间

  1.设置过时时间意味着一段时间后就会删除 redis 中指定的数据。

  2.应用场景:限时优惠活动、缓存、学校成绩排名和游戏积分排名按期刷新。

  

  3.命令:

  (1)EXPIRE:

EXPIRE key seconds  //seconds 参数表示键的过时时间,单位是秒

 

  (2)TTL:查看剩余时间

TTL key

 

  (3)DEL:删除

DEL key

 

  (4)PERSIST:取消键的过时时间设置(将该键切换成永久性质的)

PERSIST key

 

消息通知

  1.什么状况才会使用呢?

  答:好比,咱们的网站进行一些比较耗时的操做时,如发送邮件、复杂的数据运算和 IO 日志记录等均可以使用,由于这样能够避免阻塞前端页面的渲染,避免用户进行长时间的等待。通常咱们会使用多线程和异步进行处理这种耗时操做的问题。

 

  2.什么是消息通知?

  答:你能够理解为常说的消息队列,相似设计模式中的生产/消费模式,一边是生产者(producer),一边是消费者(consumer)。生产者负责把要处理的任务丢到队列里,消费者负责取出队列中的任务进行执行。

 

  3.特色:

    松耦合:没有语言限制,开发团队能够分别使用不一样的开发语言,双方约定好数据的传输格式便可。

    易于扩展:消费者能够有多个,部署在多台服务器上,轻松减轻单台服务器的压力。

 

  不过,从大局来看,企业常采用第三方更为专业的 MQ,如 RabbitMQ 替代 Redis 的消息队列机制。《[.NET] RabbitMQ 的行为艺术》

 

管道

  客户端和 Redis 采用的是 TCP 进行链接。

  咱们对 Redis 发送一条指令后进行等待,完毕后返回执行结果;接着,发送第二条指令,再次等待 Redis 执行完毕后的执行结果;第三次发送指令 ... ...。

  虽然如今的网络带宽已经足够快,不过若是执行的命令过多,性能消耗依然是挺明显的。

  管道机制,它把多条命令一次性组合起来发送到 Redis 服务器执行,再返回全部的执行结果,与以前的相比减小了两端网络请求的次数从而提升了性能。

 

优化内存空间

  虽然在如今这个年代,内存条的价格已经很是便宜,但相对于硬盘来讲,价格依然很是高昂,进行内存空间成本的控制和资源的有效利用也是一个迫切的主题。

  1.精简键名和键值。不过须要本身把握精简的尺度,由于要基于可读性的基础上进行精简,过于精简不易于维护也容易形成命名冲突。

  2.选择合适的数据类型进行存储。

  3.定时清理(删除)无效的缓存数据,或者设置自动过时时间。

  4.配置 Redis 可用的最大空间大小,进行资源的合理分配。

 

系列

  《Redis 小白指南(一)- 简介、安装、GUI 和 C# 驱动介绍

  《Redis 小白指南(二)- 聊聊五大类型:字符串、散列、列表、集合和有序集合

  《Redis 小白指南(三)- 事务、过时、消息通知、管道和优化内存空间》

  《Redis 小白指南(四)- 数据的持久化保存

 

 


【博主】反骨仔

【原文】http://www.cnblogs.com/liqingwen/p/6920680.html 

【GitHub】https://github.com/liqingwen2015/Wen.Helpers/blob/master/Wen.Helpers.Common/Redis/RedisHelper.cs

【参考】《Redis 入门指南》

相关文章
相关标签/搜索