首页 > 代码库 > Redis 使用手册
Redis 使用手册
Reis的介绍:
Redis 是完全开源免费的,遵守BSD协议,先进的key - value持久化产品。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
安装:
wget http://redis.googlecode.com/files/redis-2.8.3.tar.gz wget http://fossies.org/linux/misc/redis-2.8.3.tar.gz tar xzf redis-2.8.3.tar.gz cd redis-2.8.3 make && make install && echo “install redis ok”
复制配置文件:
cp redis.conf /etc/ sed -i "/daemonize/s/no/yes/" /etc/redis.conf sed -i "/# bind 127.0.0.1/s/#bind/bind/" /etc/redis.conf sed -i "/logfilestdout/s/stdout/\/var\/log\/redis.log/" /etc/redis.conf sed -i "/dir.\//s/.\//\/work\/redis/" /etc/redis.conf sed -i"/dbfilename/s/dump.rdb/\/work\/redis\/dump.rdb/" /etc/redis.conf sed -i "/appendonly no/s/no/yes/"/etc/redis.conf sed -i "/no-appendfsync-on-rewrite no/s/no-appendfsync-on-rewriteno/no-appendfsync-on-rewrite yes/" /etc/redis.conf cd .. mv redis-2.8.3 /work/redis
启动redis
/usr/local/bin/redis-server /etc/redis.conf
Redi的连接操作:
Redi的停止
/usr/local/bin/redis-cli shutdown
Redis数据的可持久化
Redis的持久化分为RDB快照和AOF操作日志
RDB快照。Redis支持将当前数据的快照存成一个数据文件的持久化机制。而一个持续写入的数据库如何生成快照呢。Redis借助了fork命令的copy on write机制。在生成快照时,将当前进程fork出一个子进程,然后在子进程中循环所有的数据,将数据写成为RDB文件。
我们可以通过Redis的save指令来配置RDB快照生成的时机,比如你可以配置当10分钟以内有100次写入就生成快照,也可以配置当1小时内有1000次写入就生成快照,也可以多个规则一起实施。这些规则的定义就在Redis的配置文件中,你也可以通过Redis的CONFIG SET命令在Redis运行时设置规则,不需要重启Redis。
RDB文件的备份:
#!/bin/bash #redis for RDB backup cd /work/redisback date=`date +‘%Y-%m-%d‘` #/bin/sync #Filename=redis_RDB_$date.tar.gz #echo $Filename /usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 save > /dev/null 2>&1 if [ $? -eq 0 ] then tar -Pzcvf redis_RDB_$date.tar.gz /work/redis/dump.rdb fi #cd /redisback #/redisback/ftp.sh #cd /redisback ftp -A -n <<end_ftp open xxx.xxx.xxx.xxx user user@passsword binary cd redisbackup put redis_RDB_$date.tar.gz close bye end_ftp if [ $? -eq 0 ] then echo "Database FTP OK!" && service iptables start else echo "Database FTP Faild" && service iptables start exit 1 fi exit 0
AOF日志
aof日志的全称是append only file,从名字上我们就能看出来,它是一个追加写入的日志文件。与一般数据库的binlog不同的是,AOF文件是可识别的纯文本,它的内容就是一个个的Redis标准命令
打开配置文件
appendonly yes appendfsync everysec no-appendfsync-on-rewrite yes
操作记录:
AOF的日志备份恢复也是备份日志文件即可
Redis是一个内存数据库,无论是RDB还是AOF,都只是其保证数据恢复的措施。所以Redis在利用RDB和AOF进行恢复的时候,都会读取RDB或AOF文件,重新加载到内存中。相对于MySQL等数据库的启动时间来说,会长很多,因为MySQL本来是不需要将数据加载到内存中的。
但是相对来说,MySQL启动后提供服务时,其被访问的热数据也会慢慢加载到内存中,通常我们称之为预热,而在预热完成前,其性能都不会太高。而Redis的好处是一次性将数据加载到内存中,一次性预热。这样只要Redis启动完成,那么其提供服务的速度都是非常快的。
而在利用RDB和利用AOF启动上,其启动时间有一些差别。RDB的启动时间会更短,原因有两个,一是RDB文件中每一条数据只有一条记录,不会像AOF日志那样可能有一条数据的多次操作记录。所以每条数据只需要写一次就行了。另一个原因是RDB文件的存储格式和Redis数据在内存中的编码格式是一致的,不需要再进行数据编码工作。在CPU消耗上要远小于AOF日志的加载。
Redis的数据持久化建议同时开启RDB快照和AOF日志,使用shell脚本定期将两个文件进行打包备份,在redis出现问题的时候,停止redis主进程,然后删除原有的RDB文件和AOF日志文件,使用其还原,重启redis即可
Redis的高可用架构
Redis主从架构
主redis
禁用RDB快照
#save 900 1 #save 300 10 #save 60 10000 #禁用RDB快照 #appendonly no #禁用AOF日志
从redis的配置
save 900 1 #启用Snapshot save 300 10 save 60 10000 appendonly yes #启用AOF appendfilenameappendonly.aof #AOF文件的名称 # appendfsync always appendfsync everysec #每秒钟强制写入磁盘一次 # appendfsync no no-appendfsync-on-rewriteyes #在日志重写时,不进行命令追加操作 auto-aof-rewrite-percentage100 #自动启动新的日志重写过程 auto-aof-rewrite-min-size64mb #启动新的日志重写过程的最小值
分别启动master和slave
在master中确认为启动snapshot参数:
27.0.0.1:6379> CONFIG GET save 1) "save" 2) ""
在master上可以使用info参数确认当前redis的相关信息,
我们这里模拟redis损坏,直接kill掉redis的进程ID,然后在slave上查看状态信息:info命令 master_link_status的状态已经是down了,Master已经不可访问了
进行恢复:
Slave上执行:
Slaveof no one
然后执行info确保没有master的信息
将slave上的两个dump.rdb和appendonly.aof文件拷贝到master服务器,尝试恢复。然后启动主master进程,使用info命令查看数据已经恢复,最后在slave上执行:slaveof192.168.50.234 6379
执行info命令查看master_link_status显示为up,同步状态正常。
Redis主从架构恢复的步骤:
Slave上执行:Slaveofno one 确保无master的相关信息
拷贝slave的RDB AOF文件之master上
启动master进程,使用info指令确认数据已经恢复
Slave上执行slaveof192.168.50.234 6379 ,使用指令info查看master_link_sstatus显示为up状态,就说明已经恢复成功
本文出自 “Sword Slave” 博客,请务必保留此出处http://diudiu.blog.51cto.com/6371183/1581241
Redis 使用手册