我爱编程

Redis随笔

2016-08-02  本文已影响0人  t_wayne

#RDB 和 AOF

RDB 是一个非常紧凑(compact)的文件,它保存了 Redis 在某个时间点上的数据集,可以 24 小时备份一次,可以每小时备份一次 ,RDB 非常适用于灾难恢复(disaster recovery):它只有一个文件,并且内容都非常紧凑,RDB 可以最大化 Redis 的性能。如果需要尽量避免在服务器故障时丢失数据,那么 RDB 并不适合,因为RDB 文件需要保存整个数据集的状态,因此可能至少 5 分钟才保存一次 RDB 文件,在这种情况下,一旦发生故障停机,可能会丢失好几分钟的数据。

AOF 文件是一个只进行追加操作的日志文件,AOF 持久化会让 Redis 变得非常耐久(much more durable):设置不同的 fsync 策略,比如无 fsync ,每秒钟一次 fsync ,或者每次执行写入命令时 fsync 。AOF 的默认策略为每秒钟 fsync 一次,在这种配置下,Redis 仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失一秒钟的数据( fsync 会在后台线程执行,所以主线程可以继续努力地处理命令请求)。对于相同的数据集来说,AOF 文件的体积通常要大于 RDB 文件的体积。根据所使用的 fsync 策略,AOF 的速度可能会慢于 RDB 。

一般来说,如果想达到足以媲美 PostgreSQL 的数据安全性, 你应该同时使用两种持久化功能。如果你非常关心你的数据,但仍然可以承受数分钟以内的数据丢失, 那么你可以只使用 RDB 持久化。有很多用户都只使用 AOF 持久化, 但我们并不推荐这种方式: 因为定时生成 RDB 快照(snapshot)非常便于进行数据库备份, 并且 RDB 恢复数据集的速度也要比 AOF 恢复的速度要快, 除此之外, 使用 RDB 还可以避免之前提到的 AOF 程序的 bug 。

#连接实例

redis-cli -h 10.205.20.8 -p 6379 -c

-c表示集群模式

#注意

错误 /usr/bin/env: ruby: No such file or directory,解决方法:

apt-get install ruby

Redis集群需要开放端口号+10000(集群内部使用端口),不然集群连接不上

#启动Redis集群镜像,Docker中必须使用host模式

docker run -itd --net host --name redis-cluster 10.170.232.47:5000/redis3.2

进入容器,分别启动以下实例:

redis-server /opt/cachecloud/conf/static/redis-cluster-6379.conf > /opt/cachecloud/logs/redis-6379.log 2>&1 &

redis-server /opt/cachecloud/conf/static/redis-cluster-6380.conf > /opt/cachecloud/logs/redis-6380.log 2>&1 &

redis-server /opt/cachecloud/conf/static/redis-cluster-6381.conf > /opt/cachecloud/logs/redis-6381.log 2>&1 &

redis-server /opt/cachecloud/conf/static/redis-cluster-6382.conf > /opt/cachecloud/logs/redis-6382.log 2>&1 &

redis-server /opt/cachecloud/conf/static/redis-cluster-6383.conf > /opt/cachecloud/logs/redis-6383.log 2>&1 &

redis-server /opt/cachecloud/conf/static/redis-cluster-6384.conf > /opt/cachecloud/logs/redis-6384.log 2>&1 &

创建集群

redis-trib.rb create --replicas 1 10.205.20.8:6379 10.205.20.8:6380 10.205.20.8:6381 10.205.20.8:6382 10.205.20.8:6383 10.205.20.8:6384

选项–replicas 1 表示为集群中的每个主节点创建一个从节点

#redis-cluster-6379.conf配置

bind 10.172.240.66

protected-mode yes

tcp-backlog 511

timeout 0

tcp-keepalive 0

daemonize no

loglevel notice

databases 16

slave-serve-stale-data yes

slave-read-only yes

slave-priority 100

repl-ping-slave-period 10

repl-timeout 60

repl-disable-tcp-nodelay no

repl-backlog-size 10mb

repl-backlog-ttl 7200

maxmemory 256mb

maxmemory-policy volatile-lru

no-appendfsync-on-rewrite yes

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

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

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 512mb 128mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

port 6379

dbfilename dump-6379.rdb

dir /opt/cachecloud/data

appendonly no

appendfsync everysec

appendfilename appendonly-6379.aof

auto-aof-rewrite-percentage 94

auto-aof-rewrite-min-size 64mb

cluster-enabled yes

cluster-config-file nodes-6379.conf

cluster-node-timeout 15000

cluster-slave-validity-factor 10

cluster-migration-barrier 1

cluster-require-full-coverage no

aof-rewrite-incremental-fsync yes

上一篇 下一篇

猜你喜欢

热点阅读