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 [email protected]
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状态,就说明已经恢复成功

时间: 2024-08-02 12:53:03

Redis 使用手册的相关文章

Redis学习手册(目录)

Posted on 2012-04-16 07:40 Stephen_Liu 阅读(29155) 评论(25) 编辑 收藏 为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后就是上手容易,操作简单.记得在刚刚接触Redis的时候,由于当时项目的工期相当紧张,留给我们做出选择的空间也是非常有限,一旦技术决策失误,造成的后果也比较严重.所以在做出决定之

Redis学习手册

为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后就是上手容易,操作简单.记得在刚刚接触Redis的时候,由于当时项目的工期相当紧张,留给我们做出选择的空间也是非常有限,一旦技术决策失误,造成的后果也比较严重.所以在做出决定之前,我不仅快速的浏览了Redis官网文档,而且还熬夜搜集了很多网上的相关技术文章.在经过一通折腾之后,毅然决然的选择了它,现

phpredis中文手册——《redis中文手册》 php版(转)

redis中文手册:http://readthedocs.org/docs/redis/en/latest/ 本文是参考<redis中文手册>,将示例代码用php来实现,注意php-redis与redis_cli的区别(主要是返回值类型和参数用法). 目录(使用CTRL+F快速查找命令): Key String Hash List Set 键(Key) DEL KEYS RANDOMKEY TTL EXISTS MOVE RENAME RENAMENX TYPE EXPIRE EXPIREAT

phpredis中文手册——《redis中文手册》 php版

转 http://www.cnblogs.com/zcy_soft/archive/2012/09/21/2697006.html#list_LREM redis中文手册:http://readthedocs.org/docs/redis/en/latest/ 本文是参考<redis中文手册>,将示例代码用php来实现,注意php-redis与redis_cli的区别(主要是返回值类型和参数用法). 目录(使用CTRL+F快速查找命令):Key    String    Hash    Lis

Redis学习手册——转载

转载出处:http://www.cnblogs.com/stephen-liu74/archive/2012/04/16/2370212.html 为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后就是上手容易,操作简单.记得在刚刚接触Redis的时候,由于当时项目的工期相当紧张,留给我们做出选择的空间也是非常有限,一旦技术决策失误,造成的后果也比

Redis使用手册

给公司整理了一个简单的Redis使用手册,其中很多部分也是参考的他人的资料,在这里分享一下~    Redis调研及使用文档 1  引言 随着业务的增长和产品的完善,急速增长的数据给Oracle数据库带来了很大的压力,而随着我们对产品服务质量要求的提高,传统的数据查询方式已无法满足我们需求.为此我们需要寻找另外一种模式来提高数据查询效率.NoSQL内存数据库是最近兴起的新型数据库,它的特点就是把数据放在内存中操作,数据处理速度相对于磁盘提高了好几个量级,因此,通过把经常访问的数据转移到内存数据库

phpredis中文手册——《redis中文手册》 php版--引用他人

出处: http://www.cnblogs.com/zcy_soft/archive/2012/09/21/2697006.html 目录(使用CTRL+F快速查找命令): Key String Hash List Set 键(Key) DEL KEYS RANDOMKEY TTL EXISTS MOVE RENAME RENAMENX TYPE EXPIRE EXPIREAT OBJECT PERSIST SORT 字符串(String) SET SETNX SETEX SETRANGE M

redis部署手册

一.redis介绍 1.redis简介 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和memcached缓存服务很像,但是redis支持的数据存储类型更丰富,包括string(字符串).list(链表).set(集合)和zset(有序集合)等: 这些数据类型都支持push/pop.add/remove及取交集.并集和差集及更丰富的操作,而且这些操作都是原子性的:在此基础上,redis支持各种不同方式的排序,与m

LVS+Redis部署手册

Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案. Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使用磁盘仅用于持久性. 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型. Redis可以将数据复制到任意数量的从服务器. REDIS优势 异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录. 支持丰富的数据类型:Redis支持最大多数开发人员已经知道像列表,集合,有序

Redis学习手册(Sorted-Sets数据类型)

一.概述: Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中.它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序.然而需要额外指出的是,尽管Sorted-Sets中的成员必须是唯一的,但是分数(score)却是可以重复的.    在Sorted-Set中添加.删除或更新一个成员都是非常快速的操作,其时间复杂度为集合中成员数量的对数.由于Sor