redis安装配置总结

Redis持久化

Redis只会缓存所有key的信息,如果redis发现内存的使用量超出了某一个阈值,将触发swap操作,redis根据‘swappability’计算出哪些key对应的value需要swap到磁盘。然后将这些key对应的value持久化到磁盘中,同时在内存中清除。这种特性使得redis可以保持超过其机器自身内存大小的数据。当然,机器本身的内存必须能够保存所有的key,毕竟这些数据是不会进行swap操作的。

同时由于redis将内存中的数据swap到磁盘中,提供服务的主线程和进行swap操作的子线程会共享这部分内存,所以如果需要swap的数据,redis会将阻塞这个操作,直到子线程完成swap操作后才可以进行修改。

Redis持久化的两种方式

1.    RDB:snopshotting快照,保存为二进制的格式,周期性缓存数据。

2.    AOF(append only file):可以理解为实时持久化,每写一次就会存储一次。当然对性能有所影响。

3.    在生产环境中,两者结合使用。在redis服务器重启恢复数据时,会优先使用AOF。

redis安装

1.    wget http://download.redis.io/release/redis-3.2.8.tar.gz

2.    less README.md 里面有安装步骤

3.    make编译

4.    make test检查安装有无问题

【注释】如果安装redis的机器配置过低,会在make test中报一个错:

Test replication partial resync ok psync…..

【解决方案】http://www.voidcn.com/blog/chenggong2dm/article/p-6097574.htm

调整目录(自己整理了一下,根据自己习惯来就好):

a)     mkdir others

b)     mv 00-RELEASENOTES BUGSCONTRIBUTING COPYING INSTALL Makefile MANIFESTO REANME.md runtestruntest-cluster

runtest-sentinel others/

c)     mkdir conf

d)     mv redis.conf conf/

e)     mv sentinel.conf conf/

f)      mkdir bin

g)     cd src

h)     mv redis-server redis-clirdis-sentinel ../bin/

  

修改redis配置文件

进入到redis.comf文件:

1.    修改监听地址:bind127.0.0.1èbind 安装redis的服务器IP地址

2.    daemonize修改为yes(是否以后台daemon方式运行)

3.    port:6379默认

4.    snapshoting的持久化方式长度。

a)     save 900 1 #在900秒内有一个key发生了变化

b)     save300 10#在300秒内有10个key发生了变化

c)     save 60 10000

d)     如果取消snapshoting持久化方式:save “”

5.    AOF持久化方式>>>类似于mysql的二进制日志

appendonly yes#打开AOF存储方式

appendfilename “appendonly.aof”

appendfsync everysec #记录持久化文件时间

修改两个持久化位置:

dbfilename dump.rdb

#Note that you must specify a directory here,not a filename.

默认为dir ./根据自己情况修改即可

6.    修改redis日志文件的内容:

Logfile “redis.log(自行添加路径即可)”

7.    redis密码

requirepass redis(密码最好复杂度高,避免被破解)

8.    redis主从

redis主(master)不用做任何配置

只需要在从服务器上指定主库(master)的ip和端口即可,启动从库(slave)就可以自动同步。

slaveof <masterip> <masterport>

另外如果主库(master)设置了密码,从库(slave)配置文件需修改:
masterauth <master-password>

redis启动

进入到/bin目录下:./redis-server../conf/redis.conf

启动后状态:ps –ef | grep redis

redis对事务的支持

事务:一组相关的操作都是原子性的,要么都执行,要么都不执行。

redis通过multi,exec,watch等命令实现事务功能。

开始事务:multi命令开始事务

在事务进行过程中,其他对redis的操作都会被阻塞。

exec:一并返回。

redis的复制

一个master可以有多个slave

一个slave还可以有slave,支持链式复制。

master以非阻塞方式同步数据更新至slave,master可以同时处理多个slave的操作。

把redis拷贝到其他服务器上:

scp –r wlz root@10.199.130.243 :/home/redis

修改slave服务器的配置文件redis.conf:

1.    bind slave服务器ip

2.    slaveof <masterip><masterport>

3.    masterauth<master-password>

4.    查看命令:info replication

redis安全简介

1.    禁止一些高危命令:

修改redis.conf文件:

rename-command FLUSHALL “”

rename-command CONFIG  “”

rename-command EVAL “”

来禁止远程修改DB文件地址

2.    以低权限运行redis服务

为redis服务创建单独的用户和家目录,并且配置禁止登陆

3.    为redis添加密码验证

修改redis.conf文件,添加requirepassmypassword

4.    禁止外网访问redis

修改redis.conf文件,添加或者修改:bind10.0.140.84使得redis服务只能当前主机使用。

redis哨兵sentinel

redis主从有一个问题,如果我们的master挂掉了,slave服务器只读,这样就会出现问题。redis采用sentinel机制来解决这个问题。


sentinel配置

在redis/src/下有redis-sentinel的启动程序,前面我已经将其放置到bin目录下:

配置文件:/redis/wlz/redis/conf/sentinel.conf

二进制文件:/redis/wlz/redis/bin/redis-sentinel

运行有两种方式:

1.    redis-sentinel /conf/sentinel.conf(常用)

2.    redis-server /conf/sentinel.conf–sentinel

3.    默认监听26379端口

 

修改sentinel的配置文件:

1.    port 26379

2.    sentinel monitor<master-name> <ip> <redis-port> <quorum>

master-name理解为一个别名,随便取但需要注意格式(A-z0-9.-_)

quorum是指投票数,有多少个sentinel,取小于其的数字作为最少认为通过的投票数。

3.    sentineldown-after0-milliseconds <master-name> <milliseconds> #默认30000

<milliseconds>指经过该时间后认为master宕机。

4.    sentinel failover-timeout<master-name> <milliseconds>

当redis主出现问题时,sentinel经过投票提升slave,180秒后如果不切换成功则认为失败。

5.    如果redis配置了密码

Sentinel auth-pass mymaster redis

6.    Sentinel parallel-syncsmymaster 1(并行同步)

7.    其他添加项

Daemonize yes#默认后台程序运行

Protected-mode no #非保护模式运行

Logfile “/data/wlz/redis/sentinel.log”#修改生成默认日志文件位置

可以直接编辑一个sentinel.conf文件,同时将原始sentinel.conf文件备份:

port 26379

dir "/tmp"

daemonize yes

protected-mode no

logfile "sentinel.log"

sentinel monitor redismaster 10.60.150.158 6379 2

sentinel down-after-milliseconds redismaster 5000

sentinel failover-timeout redismaster 60000

sentinel auth-pass redismaster redis

启动sentinel:

cd  bin/

/redis-sentinel ../conf/sentinel.conf

redis-cluster

3.0以后开始redis支持cluster,进行cluster配置至少需要6台服务器。

分布式数据库,通过分片机制进行数据分布,cluster内的每个节点仅持有数据库的一部分数据。

Redis cluster每一个节点都可以作为客户端的接入节点。

每个节点都只持有一部分数据,但每个节点都有全局视角。

比如,有10000个key,一共有5个redis节点,每台都可以被客户端接入,但是每台可能只存储2000个key,每台都有一个类似于index索引的东西记录了这10000个key是如何分布的。

redis-cluster分片机制

每一个key都是一个hash slot。

redis-cluster主从模型

为了保证少数redis节点宕机或者不能与多数节点通讯时整个cluster还可以正常使用,redis-cluster使用了master-slave模式,每一个hash slot具有N个副本,n-1个slave node。

redis-cluster配置

首先将redis.conf配置文件改为redis-cluster.conf:

cp redis.confredsi-cluster.conf

修改以下内容:

reqiuirepass 去掉

cluster-enabled yes

cluster-config-file nodes-6379.conf #建议以nodes-端口号的形式命名,方便辨识

cluster-node-timeout 15000

cluster-slave-validity-factor 10

cluster-migration-barrier 1

cluster-require-full-coverage yes

启动集群的时候需要ruby:

yum install ruby

yum install rubygems

gem source -l查看当前ruby源

gem sources --remove https://rubygems.org/

gem sources –remove http://rubygems.org/

gem sources –a https://ruby.taobao.org/

gem install redis

redis-trib位于redis源码的src文件夹中,他是一个ruby程序,这个程序通过向实例发送特殊命令来完成创建新集群,检查集群,或者对集群进行重新分配等工作。这里通过create命令来创建集群,指定replicas=1,即每一个主实例有一个从实例。redis-trib会打印一份预想中的配置给你看,如果你觉得没有问题,就输入yes,redis-trib就会将这份配置应用到集群当中,让各个节点开始互相通讯。

启动redis-cluster:

./redis-server ../conf/redis-cluster.conf

在src文件下执行:

./redis-trib.rb create –replicas 1 集群机器ip+端口 (10.199.130.243:6379)

可能出现的问题:

解决方案:cluster-config-file nodes-6379.conf配置文件存在非空,需要删除,然后进行重启。

之后整个redis-cluster就启动成功了。

怎么连接集群?

./redis-cli –c ….就可以进入集群模式

在已有集群上添加新的机器:

 

为节点分配slots:redis-trib.rb reshard 192.168.72.100:7006

这一块可以参考博客:http://blog.csdn.net/a491857321/article/details/52058693

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值