Redis教程

Linux(十一)redis订阅监听及集群

本文主要是介绍Linux(十一)redis订阅监听及集群,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
# 发布订阅

## subscribe

订阅一个或者多个频道

## publish

给指定的频道发送消息

## psubscribe
psubscribe zzj.*
订阅指定模式的频道,*代表所有

## pubsub channels

查看当前活跃的频道

## pubsub numsub channels

查看当前频道的订阅人数

## redis的配置文件

```SHELL
bind 127.0.0.1    # 监听的地址
protected-mode yes # 将redis运行在安全模式下
port 6379 # 端口
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no # 是否以守护进程开启
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
always-show-logo yes
save 900 1  # 在900秒以内有1次更新,就会持久化
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb   # 数据的保存文件
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
requirepass foobared # 给redis设置密码
```

## auth

密码认证

## save

保存

## flushall

清空所有的数据

# redis的主从

```SHELL
只需要在从服务器上进行配置
slaveof ip地址  端口
grep -v "^$" redis.conf |grep -v "^#" >> redis6380.conf
vim redis6380.conf
slaveof 127.0.0.1 6379
./src/redis-server redis6380.conf
如果有密码的话
masterauth <password>
命令行设置方式
config set masterauth password
```

- 基于异步的,平均每秒钟从服务器都会主服务器发送复制的情况
- 一个主可以多个从
- 不止主可以有从服务器,从也可以有从服务器
- 复制功能不会阻塞主服务器
- 复制功能也不会阻塞从服务器

# redis的持久化

- rdb
- aof

## rdb

- 优点
  - 生成二进制文件
  - 系统会默认的多长时间保存一次
  - 直接手动保存
  - 制作快照
  - 可以用作备份
  - 比较适合做灾难恢复
  - 主进程会fork一个子进程出来,子进程用来复制保存数据
- 缺点
  - 如果说数据需要尽量保存下来,则不适合使用rdb
  - 在数据量庞大的时候,对系统消耗过大

```SHELL
save 900 1  # 在900秒以内有1次更新,就会持久化
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb   # 数据的保存文件
dir ./ # 保存目录
```

## aof

- 优点
  - 持久化更好
  - aof将所有的操作都追加到一个文件中,redis-check-aof
  - 文件易读
- 缺点
  - 文件会越来越大
  - aof的速度会比rdb慢,aof 使用的是fsync
  - 文件易读

```shell
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
```

## 直接通过命令从rdb切换到aof

```SHELL
info
config set appendonly yes
config set save ""
```

# redis的高可用

豌豆荚:codis

facebook:

主观下线:哨兵检测不到服务

客观下线:全部哨兵同一协商

## redis cluster

- 16384个槽位
- 最少需要6台服务器

### 准备配置文件

```SHELL
## 6380
bind 127.0.0.1
port 6380
daemonize yes
pidfile 6380.pid
logfile 6380.log
cluster-enabled yes
cluster-config-file node-6380.conf
cluster-node-timeout 10000
## 6381
bind 127.0.0.1
port 6381
daemonize yes
pidfile 6381.pid
logfile 6381.log
cluster-enabled yes
cluster-config-file node-6381.conf
cluster-node-timeout 10000
## 6382
bind 127.0.0.1
port 6382
daemonize yes
pidfile 6382.pid
logfile 6382.log
cluster-enabled yes
cluster-config-file node-6382.conf
cluster-node-timeout 10000
## 6383
bind 127.0.0.1
port 6383
daemonize yes
pidfile 6383.pid
logfile 6383.log
cluster-enabled yes
cluster-config-file node-6383.conf
cluster-node-timeout 10000
## 6384
bind 127.0.0.1
port 6384
daemonize yes
pidfile 6384.pid
logfile 6384.log
cluster-enabled yes
cluster-config-file node-6384.conf
cluster-node-timeout 10000
## 6385
bind 127.0.0.1
port 6385
daemonize yes
pidfile 6385.pid
logfile 6385.log
cluster-enabled yes
cluster-config-file node-6385.conf
cluster-node-timeout 10000
```

### 环境准备

### 安装ruby

版本必须是2.2以上

```SHELL
wget https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.4.tar.gz
tar ruby-2.6.4.tar.gz
cd ruby-2.6.4
./configure --prefix=/opt/ruby
make && make installgji
配置环境变量
PATH=/opt/ruby/bin:$PATH
source
```

### 安装ruby依赖

```SHELL
Using /usr/local/rvm/gems/ruby-2.3.8

gem install redis
```

## 安装命令

```shell
./src/redis-cli --cluster help
./src/redis-cli --cluster create --cluster-replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385
create 创建集群
check 检查集群
info  查看集群信息
fix 修复集群
```

### 连接命令

```shel
redis-cli -c -p 6380

m[root@localhost redis-5.0.5]#./src/redis-cli -c -p 6381
127.0.0.1:6381> set a 1
-> Redirected to slot [15495] located at 127.0.0.1:6382
OK
127.0.0.1:6382> get a
"1"
127.0.0.1:6382>
m[root@localhost redis-5.0.5]#./src/redis-cli -c -p 6385
127.0.0.1:6385> keys *
(empty list or set)
127.0.0.1:6385>
m[root@localhost redis-5.0.5]#./src/redis-cli -c -p 6381
127.0.0.1:6381> keys *
(empty list or set)
127.0.0.1:6381>
m[root@localhost redis-5.0.5]#./src/redis-cli -c -p 6382
127.0.0.1:6382> keys *
1) "a"
127.0.0.1:6382> set b 1
-> Redirected to slot [3300] located at 127.0.0.1:6380
OK
127.0.0.1:6380>

cp redis6385.conf redis6386.conf
sed -i 's/6385/6386/g' redis6386.conf

```

这篇关于Linux(十一)redis订阅监听及集群的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!