发布订阅
简介:Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接受消息。 使用步骤(演示): 1、开启两个客户端 1、在第一个客户端中使用SUBSCIBE 频道名 表示创建了一个订阅频道 2、再开启一个客户端 使用 PUBLISH 频道名 "信息" 表示向这个频道发送了一个信息
| 序号 | 命令及描述 |
|---|---|
| 1 | PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道。 |
| 2 | PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态。 |
| 3 | PUBLISH channel message 将信息发送到指定的频道。 |
| 4 | PUNSUBSCRIBE [pattern [pattern ...]] 退订所有给定模式的频道。 |
| 5 | SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息。 |
| 6 | UNSUBSCRIBE [channel [channel ...]] 指退订给定的频道。 |
Redis事务
Redis事务可以一次执行多个命令,并且带有一下三个重要的保证:
- 批量操作在发送EXEC命令前被放入队列缓存。
- 收到EXEC命令后进入事务执行,事务中任意命令执行失败,其余命令依然被执行
- 在事务执行过程中,其他客户端提交的命令请求不会插入到事务执行命令序列中。
单个Redis命令的执行是原子性的,但是Redis没有在事务上增加任何维持原子性的机制。所以Redis事务的执行不是原子性的。
关于事务的命令
| 序号 | 命令及描述 |
|---|---|
| 1 | DISCARD 取消事务,放弃执行事务块内的所有命令。 |
| 2 | EXEC 执行所有事务块内的命令。 |
| 3 | MULTI 标记一个事务块的开始。 |
| 4 | UNWATCH 取消 WATCH 命令对所有 key 的监视。 |
| 5 | WATCH key [key ...] 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。 |
java使用Redis
使用前提:已经安装好Redis服务及java Redis驱动 配置好相关依赖后
//创建连接池对象
JedisPool jedisPool = new JedisPool();
Jedis jedis = jedisPool.getResource();//获得对象
jedis.xxx();//调用各种方法
主从复制
简介:为了避免单点Redis服务器的故障,准备多台服务器,互相联通。将数据复制到多个副本保存到不同的服务器上。——即使其中的一台服务器宕机,其他的服务器仍然可以继续提供服务,实现Redis的高可用。 数据的提供方:master(写数据) 数据的接收方:slave(读数据) 主从复制的概念:
- 主从复制:将master中的数据有效即时的复制到slave中。
- 一个master可以拥有多个slave,一个slave只对应一个master
- 数据的复制是单向的,只能由主节点到从节点
主从复制工作流程
- 建立连接阶段
- 数据同步阶段
- 命令传播阶段
心跳机制
在进入命令传播阶段,master和slave间需要进行信息交换,使用心跳机制进行维护,实现双方连接保持在线
悲观锁和乐观锁
使用watch命令监控一个key后,当前列中的命令会由于外部命令的执行而放弃,这就是乐观锁的体现
悲观锁:认为当前环境非常容易发生碰撞,所以执行操作前需要把数据锁定,操作完成后释放锁,其他操作才可以继续操作
乐观锁:认为当前环境不容易发生碰撞,所以执行操作前不锁定数据,万一碰撞发生,就检查版本号