12.Redis-sentinel解决方案
Redis的高可用
目前具备工程实践性的方案是Redis-sentinel方案,以及由其衍生的其他变形。另一个强大的方案,Redis Cluster

Redis的高可用
目前具备工程实践性的方案是Redis-sentinel方案,以及由其衍生的其他变形。另一个强大的方案,Redis Cluster
Redis Cluster是Redis 3.0以上提供的一个高可用方案。
1、截止目前,Redis的使用还是要承担一定风险的。看配置文件的说明。
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# WARNING EXPERIMENTAL: Redis Cluster is considered to be stable code, however
# in order to mark it as “mature” we need to wait for a non trivial percentage
# of users to deploy it in production.
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2、目前备份机制还不完善。那么需要在每个节点都进行备份,包括主节点,还需要备份下nodes.conf。
&nbs[……]
redis-cli使用
redis-cli -h 10.xx.xx.xx -p 6379
赋值相关
set server:name db110
get server:name
del server:name
SETNX :不存在这个key的时候才赋值.
SET connections 10
INCR connections => 11
INCR connections => 12
DEL connections
INCR connections => 1
过期指令
SET resource:lock “Redis Demo”
EXPIRE resource:lock 120
TTL resource:lock => 使用TTL命令验证key还可以存在多久,返回值:如果-1 ,表示永不过期,如果-2,表示不存在这个key
LIST操作 A list is a series of ordered values
RPUSH, LPUSH, LLEN, LRANGE, LPOP, and RPOP
RPUSH 在列表末[……]
内存监控:不能超过物理内存的80-90%
used_memory
used_memory_peak
超过分配的最大内存的85%就报警
OS磁盘IO监控
是否使用到了SI/SO
master_link_status:up(正常) down(不正常)
master_link_down_since_seconds:1356900595xxxxxx : Number of seconds since the link is down (如果主从复制中断,会有这个附加信息出现)
如果遇到主机宕机的情况,需要将备机切换为主机,可以使用redis-cli连接备机,输入SLAVEOF NO ONE命令即可将备机切换为主机。
切换主从示例:
1. 在原来的从库上
redis-cli> SLAVEOF NO ONE
2. 确认
3. 待主库起来后,在主库上执行
redis-cli > SLAVEOF slave_ip slave_port
4.确认. 检查复制是否完成,日志文件中显示“Append only file successfully rewritten.”
如果需要切换回来,继续下面的步骤.
待客户端全部迁移到主机后,使用slaveof no one命令修改主机复制选项
重启redis从库.(此时配置文件仍是从库)
以上注意配置文件和实际复制关系一致.
需留意rewrite aof文件耗费的内存,可能突然增加双倍的内存。
taskset、cgroup、numactl等技术的应用可能增加维护难度,大部分情况不建议使用,除非你很需要且很熟悉它们。另,绑定cpu节点是可行的,但千万不要绑定到某个核(core)。Redis的fork后台进程的操作非常耗CPU,如bgsave 或者 AOF 重写。
一般情况下,内存数据库的处理/计算应该很快的(亚微妙级别),理论上应该很快返回结果(微妙级别),如果碰到延时较久,比如几秒,往往是出了性能问题。我们这里说的延时指的是 从客户端发布一个命令到查询结果返回给客户端所耗费的总时间。以下仅讨论物理机部署的Redis,如果Redis部署在虚拟机上,性能可能差得多。
延时
可以使用如下命令测试延时(毫秒)
redis-cli --latency -h `host` -p `port`
固有延时(intrinsic latency)
2.8.7以后redis-cli可以用来衡量固有延时,固有延时指得是我们的redis的基础环境(操作系统)所导致的延时,[……]
概述
主从复制,支持链式,从库又可以做其他redis的主库.
需留意,如果数据量很大,意味着网络的冲击,要考虑到网络的规划.不要导致网络流量饱和.
更安全的方式,是配置主-从-备,一共3台主机,以减少redis备份server或其他维护对于生产的影响.
复制的方式比较简单,没有经过大规模的验证,可能存在异常.据说失步之后要重新同步所有数据。
搭建主从复制
从库的配置文件配置master的ip和端口: slaveof <masterip> <masterport> . 启动从库,会自动从主库同步所有数据过来.
注意事项:
slave-read-only可动态调整
),如果客户端对slave[……]redis的持久化方式有2种.
RDB persistence ( SNAPSHOTTING) 和 AOF persistence (append only mode ) 。
以上方式都是安全的。redis采用了Copy-On-Write技术.
redis必须加载进入内存才能提供服务,并不是因为它是一个内存数据库,而是因为他存储在磁盘上的文件( co[……]
生产环境配置模板,实际环境略有不同
daemonize yes
pidfile /var/run/redis.pid
port
6379
# bind
127.0
.
0.1
unixsocket /tmp/redis.sock
# unixsocketperm
755
timeout
0
loglevel notice
logfile stdout
# syslog-enabled no
# syslog-ident redis
# syslog-facility local0
databases
16
################################ SNAPSHOTTING #################################
save
900
1
save
300
10
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
########[......]