redis笔记
redis 安装配置学习笔记
//wget http://download.redis.io/releases/redis-2.8.17.tar.gz
下载最新版本
wget http://download.redis.io/redis-stable.tar.gz
首先必须要有 gcc 与 make
apt-get install gcc
apt-get install make
1、解压
root@localhost:~# tar -xvf redis-stable.tar.gz
2、测试
root@localhost:~/redis-stable# ./runtest
You need tcl 8.5 or newer in order to run the Redis test
提示需要安装tcl
make完成后,在原src目录下,会生成出六个exe(可执行程序),服务端只需要redis-server.exe即可
3、运行redis
后台方式启动redis
./redis-server &
启动redis客户端链接
./redis-cli
输入ping 返回pong 即为安装成功
扩展知识:
redis-cli用法:redis-cli [OPTIONS] [cmd [arg [arg ...]]]
-h <主机ip>,默认是127.0.0.1
-p <端口>,默认是6379
-a <密码>,如果redis加锁,需要传递密码
--help,显示帮助信息
如:redis-cli -h 192.168.1.103 -p 6379
考虑到redis是单线程工作,因此一般是一台电脑上,启动多个redis实例。
启动方式二
使用配置文件启动
./redis-server redis.conf &
配置示例在 src目录的父级目录里有。也可以进行查找
find / -name redis.conf
4、redis主从配置
Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。
1).master可以有多个slave
2).除了多个slave连到相同的master外,slave也可以连接其他slave形成图状结构
3).主从复制不会阻塞master。也就是说当一个或多个slave与master进行初次同步数据时,master可以继续处理client发来的请求。相反slave在初次同步数据时则会阻塞不能处理client的请求。
4).主从复制可以用来提高系统的可伸缩性,我们可以用多个slave 专门用于client的读请求,比如sort操作可以使用slave来处理。也可以用来做简单的数据冗余
5).可以在master禁用数据持久化,只需要注释掉master 配置文件中的所有save配置,然后只在slave上配置数据持久化。
参考文档:http://blog.csdn.net/done58/article/details/50997817
环境描述:
主redis:127.0.0.1 6379
从redis:127.0.0.1 6380
主配置文件:redis.conf (不用更新,重点关注下面两个参数)
port 6379
pidfile /var/run/redis_6379.pid
从配置文件 redis2.conf (需要更改下面的参数)
port 6380
pidfile /var/run/redis_6380.pid
slaveof localhost 6379
先启动主 再启动从 。
redis 主从默认是读写分离。主为读写,从为读。
主从复制过程:
1):当一个从数据库启动时,会向主数据库发送sync命令,
2):主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来
3):当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。
4):从数据库收到后,会载入快照文件并执行收到的缓存的命令。
5、默认是读写分离的
6、redis 主从切换
1)停止主节点
2)切换从节点为主节点
./redis-cli -p 6380 slaveof NO ONE
3)测试从节点是否可读写
4)当主节点恢复工作后,要及时更新从节点,设置为主节点的从节点。
7、redis数据保存
1、快照(snapshots)
缺省情况情况下,Redis把数据快照存放在磁盘上的二进制文件中,文件名为dump.rdb。你可以配置Redis的持久化策略,例如数据集中每N秒钟有超过M次更新,就将数据写入磁盘;或者你可以手工调用命令SAVE或BGSAVE。
工作原理
Redis forks.
子进程开始将数据写到临时RDB文件中。
当子进程完成写RDB文件,用新文件替换老文件。
这种方式可以使Redis使用copy-on-write技术。
相关参数
save 900 1
save 300 10
save 60 10000
保存的目录
dir ./
示例:
命令
save 进行保存
scp 复制到另外一台机器的存储目录,而后重新启动那台机器,就可以看到数据复制了。
scp dump.rdb root@192.168.0.149:/usr/local/redis/bin/
root@192.168.0.149's password:
dump.rdb
8、redis集群 (3.0版本以后实现的)
(个人理解:把各redis 组成一个圆,每个圆负责一部分hash槽。圆中的各节点不复制数据。 圆中的各节点均提供一个主从备份实现高可用。)
3.0之后的功能,至少需要3(Master)+3(Slave)才能建立集群,是无中心的分布式存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用、可扩展等问题。
Redis集群提供了以下两个好处
1、将数据自动切分(split)到多个节点
2、当集群中的某一个节点故障时,redis还可以继续处理客户端的请求。
一个 redis 集群包含 16384 个哈希槽(hash slot),数据库中的每个数据都属于这16384个哈希槽中的一个。集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽。集群中的每一个节点负责处理一部分哈希槽。
集群中的主从复制
集群中的每个节点都有1个至N个复制品,其中一个为主节点,其余的为从节点,如果主节点下线了,集群就会把这个主节点的一个从节点设置为新的主节点,继续工作。这样集群就不会因为一个主节点的下线而无法正常工作
注意:
1、如果某一个主节点和他所有的从节点都下线的话,redis集群就会停止工作了。redis集群不保证数据的强一致性,在特定的情况下,redis集群会丢失已经被执行过的写命令。
2、使用异步复制(asynchronous replication)是redis 集群可能会丢失写命令的其中一个原因,有时候由于网络原因,如果网络断开时间太长,redis集群就会启用新的主节点,之前发给主节点的数据就会丢失。
集群什么时候会挂掉(集群是多个master组成的圆,各master有多个salve)
a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成进群的slot映射[0-16383]不完成时进入fail状态.
b:如果进群超过半数以上master挂掉,无论是否有slave集群进入fail状态
redis 集群实战参数地址:http://blog.csdn.net/myrainblues/article/details/25881535/
9、redis监控
http://blog.csdn.net/u011204847/article/details/51307044