redis消息队列:发布和订阅,以及频道打开一个subscribe
127.0.0.1:6379> SUBSCRIBE test
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "test"
3) (integer) 1
1) "message"
2) "test"
3) "hello"
1) "message"
2) "test"
3) "word
在另外一个终端输入 PUBLISH test word
127.0.0.1:6379> PUBLISH test word
(integer) 1
127.0.0.1:6379>
那么这些数据会将在subcribe中打印出,这种方式发送后将不会再发送,如果丢失则会丢失
redis支持两种持久化,分别是rdb和aofrdb:指定的时间内快照存放在本地aof: 将所有执行过的命令保存在本地,这种方式更像mysql的binlog在服务器宕机时,如果是快照的方式,数据将会丢失一部分,而aof则损失的较小,并且在后台会进行重写
rdb:
[root@yum-down ~]# vim /etc/redis/6379.conf
save 900 1
save 300 10
save 60 10000
900秒内如果有一个key发送变化则做一次快照,或者在300秒内有10个key发生变化则做一次快照,或者在60秒内,有10000个key做一次快照,禁用删除save即可,另外这里的快照是经过压缩的
dbfilename dump_6379.rdb
快照的保存的名词dir /opt/redis
快照保存的位置如下:
127.0.0.1:6379> set key 1
OK
127.0.0.1:6379> save
OK
127.0.0.1:6379> set key 2
OK
127.0.0.1:6379> save
OK
127.0.0.1:6379>
[root@yum-down ~]# ll /opt/redis/
total 4
-rw-r--r-- 1 root root 27 Feb 26 04:49 dump_6379.rdb
[root@yum-down ~]# ll /opt/redis/
total 4
-rw-r--r-- 1 root root 27 Feb 26 04:50 dump_6379.rdb
[root@yum-down ~]# ll /opt/redis/
BGSAVE
127.0.0.1:6379> BGSAVE
Background saving started
127.0.0.1:6379>
[root@yum-down ~]# ll /opt/redis/
total 4
-rw-r--r-- 1 root root 27 Feb 26 04:51 dump_6379.rdb
通常我们备份时AVE不会影响到正常业务,通常我们关机时使用save后再进行。SAVE和BGSAVE它们调用的方式各有不同: SAVE 直接调用 rdbSave ,阻塞 Redis主进程,直到保存完成为止。在主进程阻塞期间,服务器不能处理客户端的任何请求,BGSAVE 则 fork 出一个子进程,子进程负责调用 rdbSave ,并在保存完成之后向主进程发送信号,通知保存已完成。因为 rdbSave 在子进程被调用,所以 Redis 服务器在BGSAVE 执行期间仍然可以继续处理客户端的请求。
AOF:
[root@yum-down ~]# vim /etc/redis/6379.conf
appendonly yes
appendfilename "appendonly.aof"
AOF在set是通过算法进行数据重写AOF在配置文件中修改后,他的数据也是存放在dir目录中,和rdb一个目录中
[root@yum-down redis]# ll /opt/redis/
total 4
-rw-r--r-- 1 root root 0 Feb 26 05:49 appendonly.aof
-rw-r--r-- 1 root root 27 Feb 26 05:49 dump_6379.rdb
[root@yum-down redis]#
[root@yum-down redis]# cat appendonly.aof
*2
$6
SELECT
$1
0
*3
$3
set
$1
1
$1
1
[root@yum-down redis]#