首页 > 代码库 > 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”

wKiom1RwGgnAz6RPAAETGuHSZwY077.jpg

复制配置文件:

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

wKiom1RwGkPBtezUAADqZWEHm6Y361.jpgRedi的连接操作:
wKiom1RwGmLh60NoAAFZO61AYYs958.jpg

Redi的停止

/usr/local/bin/redis-cli  shutdown

Redis数据的可持久化

 

Redis的持久化分为RDB快照和AOF操作日志

RDB快照。Redis支持将当前数据的快照存成一个数据文件的持久化机制。而一个持续写入的数据库如何生成快照呢。Redis借助了fork命令的copy on write机制。在生成快照时,将当前进程fork出一个子进程,然后在子进程中循环所有的数据,将数据写成为RDB文件。

我们可以通过Redissave指令来配置RDB快照生成的时机,比如你可以配置当10分钟以内有100次写入就生成快照,也可以配置当1小时内有1000次写入就生成快照,也可以多个规则一起实施。这些规则的定义就在Redis的配置文件中,你也可以通过RedisCONFIG 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

操作记录:

wKiom1RwGumhnz8fAACI4jJjERA922.jpg

AOF的日志备份恢复也是备份日志文件即可

 

Redis是一个内存数据库,无论是RDB还是AOF,都只是其保证数据恢复的措施。所以Redis在利用RDBAOF进行恢复的时候,都会读取RDBAOF文件,重新加载到内存中。相对于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  
#启动新的日志重写过程的最小值

分别启动masterslave

master中确认为启动snapshot参数:

27.0.0.1:6379> CONFIG GET save
1) "save"
2) ""

master上可以使用info参数确认当前redis的相关信息,

我们这里模拟redis损坏,直接killredis的进程ID,然后在slave上查看状态信息:info命令 master_link_status的状态已经是down了,Master已经不可访问了

进行恢复:

Slave上执行:

Slaveof no one

然后执行info确保没有master的信息

slave上的两个dump.rdbappendonly.aof文件拷贝到master服务器,尝试恢复。然后启动主master进程,使用info命令查看数据已经恢复,最后在slave上执行:slaveof192.168.50.234 6379

执行info命令查看master_link_status显示为up,同步状态正常。


Redis主从架构恢复的步骤:

 

Slave上执行:Slaveofno one 确保无master的相关信息

拷贝slaveRDB 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 使用手册