redis配置

 redis集群部署及安装配置:

1.下载及安装

mkdir /data/data_redis/

wget http://redis.googlecode.com/files/redis-2.4.16.tar.gz 

tar zxvf redis-2.4.16.tar.gz 

cd redis-2.4.16

make && make install 

cp redis.conf  /etc/

 

 

2.配置

(Master)192.168.100.27 6339  AOF(no)

(Slave)192.168.100.29  6339   AOF(yes)

只需要连接192.168.100.247 6330,异步同步(为了提高性能在master上面关闭aof持久化,在slave上面开启)

 

redis.conf 

######Master config

###General 配置

daemonize yes     #使用daemon 方式运行程序,默认为非daemon方式运行

pidfile /tmp/redis.pid  #pid文件位置

port 6379   #使用默认端口

timeout 30   # client 端空闲断开连接的时间

loglevel warning  #日志记录级别,默认是notice,我这边使用warning,是为了监控日志方便。使用warning后,只有发生告警才会产生日志,这对于通过判断日志文件是否为空来监控报警非常方便。

logfile /opt/logs/redis/redis.log   #日志产生的位置

databases 16   #默认是0,也就是只用1 个db,我这边设置成16,方便多个应用使用同一个redis server。使用select n 命令可以确认使用的redis db ,这样不同的应用即使使用相同的key也不会有问题。

 

###下面是SNAPSHOTTING持久化方式的策略。为了保证数据相对安全,在下面的设置中,更改越频繁,SNAPSHOTTING越频繁,也就是说,压力越大,反而花在持久化上的资源会越多。所以我选择了master-slave模式,并在master关掉了SNAPSHOTTING。

#save 900 1     #在900秒之内,redis至少发生1次修改则redis抓快照到磁盘

#save 300 100   #在300秒之内,redis至少发生100次修改则redis抓快照到磁盘

#save 60 10000  #在60秒之内,redis至少发生10000次修改则redis抓快照到磁盘

rdbcompression yes  #使用压缩

dbfilename dump.rdb  #SNAPSHOTTING的文件名

dir /opt/data/redis/ #SNAPSHOTTING文件的路径

 

###REPLICATION 设置,

#slaveof    #如果这台机器是台redis slave,可以打开这个设置。如果使用master-slave模式,我就会在master上把SNAPSHOTTING关了,这样可以不用在master上做持久化,而是在slave上做,这样可以大大提高master 内存使用率和系统性能。

#slave-serve-stale-data yes  #如果slave 无法与master 同步,是否还可以读

 

### SECURITY 设置

#requirepass aaaaaaaaa   #redis性能太好,用个passwd 意义不大

#rename-command FLUSHALL ""  #可以用这种方式关掉非常危险的命令,如FLUSHALL这个命令,它清空整个 Redis 服务器的数据,而且不用确认且从不会失败

 

###LIMIT 设置

maxclients 0 #无client连接数量限制

maxmemory 14gb #redis最大可使用的内存量,我的服务器内存是16G,如果使用redis SNAPSHOTTING的copy-on-write的持久会写方式,会额外的使用内存,为了使持久会操作不会使用系统VM,使redis服务器性能下降,建议保留redis最大使用内存的一半8G来留给持久化使用,我个人觉得非常浪费。我没有在master上不做持久化,使用主从方式

maxmemory-policy volatile-lru  #使用LRU算法删除设置了过期时间的key,但如果程序写的时间没有写key的过期时间,建议使用allkeys-lru,这样至少保证redis不会不可写入。

 

###APPEND ONLY MODE 设置

appendonly no  #不使用AOF,AOF是另一种持久化方式,我没有使用的原因是这种方式并不能在服务器或磁盘损坏的情况下,保证数据可用性。

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

 

###SLOW LOG 设置

slowlog-log-slower-than 10000  #如果操作时间大于0.001秒,记录slow log,这个log是记录在内存中的,可以用redis-cli slowlog get 命令查看

slowlog-max-len 1024  #slow log 的最大长度

 

###VIRTUAL MEMORY 设置

vm-enabled no   #不使用虚拟内存,在redis 2.4版本,作者已经非常不建议使用VM。

vm-swap-file /tmp/redis.swap

vm-max-memory 0

vm-page-size 32

vm-pages 134217728

vm-max-threads 4

 

###ADVANCED CONFIG 设置,下面的设置主要是用来节省内存的,我没有对它们做修改

hash-max-zipmap-entries 512

hash-max-zipmap-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

activerehashing yes

 

###INCLUDES 设置 ,使用下面的配置,可以配置一些个另其它的设置,如slave的配置

#include /path/to/local.conf

#include /path/to/other.conf

#include /opt/redis/etc/slave.conf  如果是slave server,把这个注释打开

 

 

 

 

  
  
  
  
  1. daemonize yes                        
  2. pidfile /data/app_a/redis.pid              
  3. port 6311      
  4. bind 192.168.100.247    
  5. timeout 300      
  6. loglevel warning     
  7. logfile /data/app_a/redis.log   
  8. databases 32         
  9. maxclients 0   
  10. slowlog-log-slower-than 10000  
  11. slowlog-max-len 1024  
  12. hash-max-zipmap-entries 512  
  13. hash-max-zipmap-value 64  
  14. list-max-ziplist-entries 512  
  15. list-max-ziplist-value 64  
  16. set-max-intset-entries 512  
  17. zset-max-ziplist-entries 128  
  18. zset-max-ziplist-value 64  
  19. activerehashing yes  
  20.   

 

 

 

主从同步配置:

只需把/etc/redis.conf 复制到 从机上,主、从机上把127.0.0.1 IP 改成本机ip,然后在从机上的redis.conf 里添加以下几行,重启即可:

bind 192.168.100.249 

slave-serve-stale-data yes  

slaveof 192.168.100.247 6330 

masterauth <master-password> 

注:以上主从配置做了密码验证,也可不做验证,不用加masterauth 选项

 

 

启动:

redis-server /etc/redis.conf 

开机启动:

echo "redis-server /etc/redis.conf" >>/etc/rc.local 

 

redis-cli -h 192.168.100.247 -p 6330

info

redis_version:2.4.16

redis_git_sha1:00000000

redis_git_dirty:0

arch_bits:64

multiplexing_api:epoll

gcc_version:4.1.2

process_id:3770

uptime_in_seconds:288

uptime_in_days:0

lru_clock:386761

used_cpu_sys:0.00

used_cpu_user:0.00

used_cpu_sys_children:0.00

used_cpu_user_children:0.00

connected_clients:1

connected_slaves:1

client_longest_output_list:0

client_biggest_input_buf:0

blocked_clients:0

used_memory:741856

used_memory_human:724.47K

used_memory_rss:1601536

used_memory_peak:741880

used_memory_peak_human:724.49K

mem_fragmentation_ratio:2.16

mem_allocator:jemalloc-3.0.0

loading:0

aof_enabled:0

changes_since_last_save:1

bgsave_in_progress:0

last_save_time:1346044713

bgrewriteaof_in_progress:0

total_connections_received:4

total_commands_processed:7

expired_keys:0

evicted_keys:0

keyspace_hits:2

keyspace_misses:0

pubsub_channels:0

pubsub_patterns:0

latest_fork_usec:129

vm_enabled:0

role:master

slave0:192.168.100.249,6333,online  #slave已连接上

db0:keys=2,expires=0

 

 

如果主服务器重启,因为AOF关闭了,该怎样恢复数据?

CP slave上的数据到master上就可以了,记得在master上开启AOF,然后BGREWRITEAOF一下。然后在配置中关掉AOF,再重启master.

你可能感兴趣的:(redis)