Java学习笔记--Redis的发布与订阅

一、发布与订阅

订阅者(subscribe)-------> 发布者(publish) <----订阅者(subscribe)

发布:

PUBLISH chan(通道)

示例:
PUBLISH foot duck

订阅:

SUBSCRIBE chan(通道)

示例:
SUBSCRIBE foot

批量订阅:

PSUBSCRIBE chan(通道,可以使用通配符:*)

示例:
PSUBSCRIBE foot*

虽然REDIS可以做类似MQ的事情,但是不建议使用。

二、redis的持久化处理

redis的持久化处理有以下两种模式:

RDB

RDB:每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,回复的时候把快照文件读进内存。如果宕机重启,那么内存里的数据肯定会没有的,那么再次启动redis后,则会恢复。默认模式。

优势:
  1. 使用快照模式,每隔一段时间全量备份。备份的文件为一个单文件。
  2. 容灾简单,可远程传输。
  3. 子进程备份的时候,主进程不会有任何io操作(不会有写入修改或删除),保证备份数据的完整。
缺点:
  1. 发生故障时,有可能会丢失最后一次的备份数据。
  2. 子进程所占用的内存比会和父进程一模一样,如会造成CPU负担。
  3. 由于定时全量备份是重量级操作,所以对于实时备份,就无法处理了。
在redis.conf 中的配置
<!-- 保存时间 -->

<!-- 表示15分钟内至少发生过1次变动,则15分钟后会进行一次备份 -->
save 900 1
<!-- 表示5分钟内至少发生过10次变动,则5分钟后会进行一次备份 -->
save 300 10 
<!-- 表示1分钟内至少发生过10000次变动,则1分钟后会进行一次备份 -->
save 60 10000

<!-- 备份过程中出现错误则停止备份,默认yes,为no时可能造成数据的不一致 -->
stop-writes-on-bgsave-error yes

<!-- 是否压缩(LZF格式),如果想要降低CPU的损耗,可以设置为no,但是此时备份的数据会比较大 -->
rdbcompression yes

<!-- 校验数据 -->
rdbchecksum yes

<!-- 备份的文件名 -->
dbfilename dump.rdb

<!-- 备份的文件路径 -->
dir /usr/local/redis/working

AOF

全称: APPEND ONLY MODEL

在redis.conf 中的配置
<!-- 默认关闭 -->
appendonly yes

<!-- 备份文件名称 -->
appendfilename "appendonly.aof"

<!-- 策略,有以下三种 -->
<!-- 针对每一次写入操作都会进行备份 -->
# appendfsync always
<!-- 每一秒钟进行一次备份,默认 -->
appendfsync ererysec
<!-- 关闭 -->
#appendfsync no

<!-- 当重写的时候不做同步,默认为no -->
no-appendfsync-on-rewrite no

<!--  -->
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

可以同时使用两种模式,默认先加载的是AOF文件,如果AOF出现问题,才会去加载RDB文件,这种做法也称为冷热备份。

三、主从架构

主:master,只能有一个,写处理。
从:slave,可以多个,读处理。在slave节点进行写操作,会报错误

主从就是读写分离。水平扩展,可以通过增加服务器以提升并发量。

数据同步的过程:
  1. slave服务器第一次启动时,会ping一次master服务器,master服务器会把RDB文件通过硬盘复制提交给slave服务器的硬盘,以用于数据的同步。

  2. 第一次之后,每当master服务器接收到新的写操作时,都会提交给slave服务器,以完成数据同步。

  3. slave服务器重启后,会加载RDB中保存的数据,同时与master服务器缺失的数据,master服务器会同步给slave。

注意:必须开通master服务器的持久化机制。否则,master服务器重启,会删除所有slave服务器的数据。

主从配置:

<!-- 进入到redis-cli,查询节点信息 -->
info replication

<!-- 在redis.conf中搜索REPLICATION -->

<!-- masterip:主节点ip     masterport:主节点端口 -->
replicaof <masterip> <masterport>

<!-- 设置主节点的密码 -->
masterauth <master-password>

<!-- 默认配置,表示从节点是只读的,不处理写操作 -->
replica-read-only yes

无磁盘化复制

如果磁盘是机械硬盘,那么主从磁盘复制的效率会比较低,那么此时就可以使用无磁盘华复制的方式。

目前无磁盘化复制,使用的是socket方式,但是是处于试验阶段,不建议在生产环境中使用。

<!-- 在redis.conf中搜索diskless -->

<!-- 无磁盘化复制的开关,默认关闭 -->
repl-diskless-sync no

<!-- 无磁盘化复制的等待时间,默认5秒 -->
repl-diskless-sync-delay 5

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容