存档

文章标签 ‘Redis’

12.Redis-sentinel解决方案

2013年11月22日 834 views 没有评论

Redis的高可用

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

 

Redis-sentinel解决方案,我们可以参考下面这个图(来自REDIS-SENTINEL TWEMPROXY AGENT)。
架构说明:
应用通过TwemProxy这个代理来访问后端的Redis实例,TwemProxy可以实现sharding的功能。
 为了解决TwemProxy的高可用,引入了Haproxy+VIP的架构。
Redis sentinel监控Redis主从,处理主从切换,在Master宕的情况下,可以把它的一个从库提升为主,并修改其他从库指向新的主库。
虽然Redis sentinel可以很完美的处理主从切换,但仍然需要通知TwemProxy新的主库信息,所以引入了一个REDIS-TWEMPROXY AGENT组件,它会订阅Redis sentinel信息,在主库发生改变后,通知TwemProxy把流量指向新的主库。
Diagram
组件说明:
Haproxy: 高稳定的代理服务,提[……]

Read more

分类: 互联网技术 标签:

11.redis cluster

2013年11月22日 801 views 没有评论

Redis ClusterRedis 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[……]

Read more

分类: 互联网技术 标签:

10.redis常用命令

2013年11月22日 640 views 没有评论

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 在列表末[……]

Read more

分类: 互联网技术 标签:

9.redis监控和慢查询检查

2013年10月22日 1,073 views 没有评论

内存监控:不能超过物理内存的80-90%
used_memory
used_memory_peak
超过分配的最大内存的85%就报警

OS磁盘IO监控
是否使用到了SI/SO

 

Persistence
rdb_changes_since_last_save   从上次保存以来有多少变更,意即崩溃可能丢失的数据量.
rdb_last_bgsave_time_sec  快照备份dump一次耗费的时间(秒)
Replication

master_link_status:up(正常) down(不正常)
master_link_down_since_seconds:1356900595xxxxxx : Number of seconds since the link is down (如果主从复制中断,会有这个附加信息出现)

Fork Performance
latest_fork_usec      : Duration of the latest fork operation in microseconds.
慢查询[……]

Read more

分类: 互联网技术 标签:

8.redis故障恢复

2013年10月22日 688 views 没有评论
宕机后,直接启动redis server即可.会把数据文件load进内存,如果持久化方式为aof,需要应用完aof文件(可能很耗时).

 

如果遇到主机宕机的情况,需要将备机切换为主机,可以使用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从库.(此时配置文件仍是从库)
以上注意配置文件和实际复制关系一致.

 

如果aof文件损坏,需修复aof文件.参考:What should I[……]

Read more

分类: 互联网技术 标签:

7.redis性能诊断

2013年10月22日 797 views 没有评论

需留意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的基础环境(操作系统)所导致的延时,[……]

Read more

分类: 互联网技术 标签:

6.redis复制

2013年10月22日 753 views 没有评论

概述

主从复制,支持链式,从库又可以做其他redis的主库.

需留意,如果数据量很大,意味着网络的冲击,要考虑到网络的规划.不要导致网络流量饱和.
更安全的方式,是配置主-从-备,一共3台主机,以减少redis备份server或其他维护对于生产的影响.
复制的方式比较简单,没有经过大规模的验证,可能存在异常.据说失步之后要重新同步所有数据。

 

搭建主从复制

从库的配置文件配置master的ip和端口: slaveof <masterip> <masterport> . 启动从库,会自动从主库同步所有数据过来.

 

注意事项:

  • 主从复制不会阻塞master,也就是说同步时,master可以继续处理client发来的请求,并不影响同步数据的一致性,而slave初次同步数据时则会阻塞,导致不能处理client的请求?待验证
  • slave上并未禁止写操作(2.6 以后支持slave默认只读模式,虽然管理命令仍然可以执行,选项 slave-read-only可动态调整),如果客户端对slave[……]

Read more

分类: 互联网技术 标签:

5.redis备份

2013年10月22日 641 views 没有评论
1. 在从库备份;
2. 直接copy文件到远程或者另一个磁盘即可.
写一个脚本,定期备份快照文件.  日志可不做备份了.
分类: 互联网技术 标签:

4.持久化机制

2013年10月22日 610 views 没有评论

redis的持久化方式有2种.
RDB persistence ( SNAPSHOTTING) 和 AOF persistence (append only mode ) 。

  • RDB persistence
    snapshotting 会可定时dump整个数据文件到磁盘上,如果数据文件较大,则意味着巨大的IO冲击.所以不能和其他的io瓶颈型服务一起部署
  •  AOF persistence
    append only mode 会记录操作日志(appendonly.aof),如果宕机后实例重启,会加载这个日志文件进行恢复,如果更改很频繁,这个文件可能很巨大,那么灾难恢复时间会比较长。新版本的redis已经可以自动调用BGREWRITEAOF命令重写aof文件以减少aof文件大小. 重写可能导致性能问题,no-appendfsync-on-rewrite设为yes可以缓解这个问题。

以上方式都是安全的。redis采用了Copy-On-Write技术.

redis必须加载进入内存才能提供服务,并不是因为它是一个内存数据库,而是因为他存储在磁盘上的文件( co[……]

Read more

分类: 互联网技术 标签:

3.建议配置文件

2013年10月22日 629 views 没有评论

生产环境配置模板,实际环境略有不同

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 ./
########[......]

Read more

分类: 互联网技术 标签: