Redis笔记三:一些概念

142 阅读3分钟

发布订阅

简介:Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接受消息。 使用步骤(演示): 1、开启两个客户端 1、在第一个客户端中使用SUBSCIBE 频道名 表示创建了一个订阅频道 2、再开启一个客户端 使用 PUBLISH 频道名 "信息" 表示向这个频道发送了一个信息

序号命令及描述
1PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道。
2PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态。
3PUBLISH channel message 将信息发送到指定的频道。
4PUNSUBSCRIBE [pattern [pattern ...]] 退订所有给定模式的频道。
5SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息。
6UNSUBSCRIBE [channel [channel ...]] 指退订给定的频道。

Redis事务

Redis事务可以一次执行多个命令,并且带有一下三个重要的保证:

  • 批量操作在发送EXEC命令前被放入队列缓存。
  • 收到EXEC命令后进入事务执行,事务中任意命令执行失败,其余命令依然被执行
  • 在事务执行过程中,其他客户端提交的命令请求不会插入到事务执行命令序列中。

单个Redis命令的执行是原子性的,但是Redis没有在事务上增加任何维持原子性的机制。所以Redis事务的执行不是原子性的。

关于事务的命令

序号命令及描述
1DISCARD 取消事务,放弃执行事务块内的所有命令。
2EXEC 执行所有事务块内的命令。
3MULTI 标记一个事务块的开始。
4UNWATCH 取消 WATCH 命令对所有 key 的监视。
5WATCH 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后,当前列中的命令会由于外部命令的执行而放弃,这就是乐观锁的体现

悲观锁:认为当前环境非常容易发生碰撞,所以执行操作前需要把数据锁定,操作完成后释放锁,其他操作才可以继续操作

乐观锁:认为当前环境不容易发生碰撞,所以执行操作前不锁定数据,万一碰撞发生,就检查版本号