redis事务、订阅发布、主从复制

一、redis事务

1、是什么

可以一次执行多个命令,本质时一组命令的集合。一个事务中所有的命令都会序列化,按顺序地串行化执行而不会被其他命令插入,不许加塞。

2、能做什么

一个队列中,一次性、顺序性、排他性的执行一系列命令

3、使用方式

1)常用命令

DISCARD  : 取消事务,放弃执行事务块内所有相关命令
EXEC  :执行所有事务块中的命令
MULTI:标记一个事务块开始
UNWATCH:取消WATCH命令对所有key的监视
WATCH  key 【key.....】 监视一个或多个key,如果在事务执行之前这个或这些key被其他命令修改,那么事务被打断

2)watch命令类似于雷管所,事务提交时,如果key的值已经被改变,整个事务队列都不会被执行。通过watch命令在事务执行之前监控了多个keys,若在watch之后有任何key值发生变化,EXEC命令执行的事务都将被放弃,同时返回nullmulti-bulk应答已通知调用者事务执行失败

4、事务执行过程

1)开启:以MULTI开始一个事务
2)入队:将多个命令入队到事务中,接着这些命令并不会立即执行,而是放入事务队列中
3)执行:由EXEC命令触发事务并提交

5、三大特性

1、单独的隔离操作:事务中的所有命令都会序列化、按顺序的执行。事务在执行过程中,不会被其他客户端发送过来的命令请求所打断
2、没有隔离级别的概念:队列中的命令没有提交之前都不会被执行,因为事务提交之前任何指令都不会被实际执行。也不存在“事务内的查询要看到事务的更新,在事务外查询不能看到”这个让人头痛的问题
3、不保证原子性:redis同一个事务中如果有一条命令执行失败,其后的命令任然会被执行,没有回滚。

二、发布订阅

1、是什么

进程间的一种通讯模式:发送者(pub)发送消息,订阅者(sub)接收消息

使用subscribe订阅消息
在这里插入图片描述
使用publish发布消息
在这里插入图片描述

2、常用命令
PSUBSCRIBE pattern  【pattern...】订阅一个或多个符合给定模式的频道
PUBSUB subcommand  【argument【argument...】】查看订阅与发布系统状态
PUBLISH channel  message  将消息发送到指定的频道
PUNSUBSCRIBE 【pattern【pattern...】】退订所有给定模式的频道
SUBSCRIBE  channel 【channel...】订阅给定的一个或多个频道信息
UNSUBSCRIBE  【channel【channel...】】只退订给定的频道
3、示例

在这里插入图片描述

三、redis主从复制

1、是什么

主机数据更新后根据配置和策略,自动同步到备机的master/slave机制,master以写为主,slave以读为主

2、优势

读写分离、容错恢复

3、使用

1)配从不配主
2)从库配置: slaveof主库ip主库端口(每次与master断开之后都要重写连接,除非配置到redis.conf文件 info replication
3)修改配置文件:

a、拷贝多个redis.conf文件
b、开启daemonize yes
c、pid我呢见名称
d、指定端口
e、log文件名
f、dump.rdb名称

4)星火相传

上一个slave可以时下一个slave的master,slave同样可以接受其他slaves的连接和同步请求,那么该slave作为了链条中下一个master,可以有效减轻master的写压力,中途变更会清楚之前的数据,重写拷贝最新数据,
命令:slaveof ip 端口

5)反客为主

slaveof no one 使当前数据库停止与其他数据库的同步,转为主数据库

4、复制原理

slave启动成功连接到master后会发送一份sync命令,master接到命令后启动后台存盘进程,同时手机所有接受到的用于修改数据集命令, 在后台进程执行完成后,master将传送到整改数据文件到slave’,以完成第一个词完全同步
1)全量复制:slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
2)增量复制:master继续向新的所有收集到的修改命令依次传给slave,完成同步,但是只要时重新连接master,一次完全复制将会自动执行

5、哨兵模式(sentinel)

Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis 的高可用性解决方案。sentinel可以让redis实现主从复制,当一个集群中的master失效之后,sentinel可以选举出一个新的master用于自动接替master的工作,集群中的其他redis服务器自动指向新的master同步数据。一般建议sentinel采取奇数台,防止某一台sentinel无法连接到master导致误切换

四、redis的java客户端jedis

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值