Redis介绍
Reids是一个比较高级的开源key-value存储系统,采用ANSI C实现。其与memcached类似,但是支持持久化数据存储,同时value支持多种类型:字符串 (同memcached中的value),列表 ,集合 (Set),有序集合(OrderSet)和Hash 。 所有的值类型均支持原子操作,如列表中追加弹出元素,集合中插入移除元素等。Rdids的数据大部分位于内存中,其读写效率非常高,其提供AOF(追加 式操作记录文件)和DUMP(定期数据备份)两种持久化方式。Redis支持自定义的VM(虚拟内存)机制,当数据容量超过内存时,可以将部分Value 存储到文件中。同时Redis支持Master-Slave机制,可以进行数据复制。
附:redis.conf配置文件:
#是否作为守护进程运行
daemonize yes
#配置pid的存放路径及文件名,默认为当前路径下
pidfile redis.pid
#Redis默认监听端口
port 6379
#客户端闲置多少秒后,断开连接
timeout 300
#日志显示级别
loglevel verbose
#指定日志输出的文件名,也可指定到标准输出端口
logfile stdout
#设置数据库的数量,默认连接的数据库是0,可以通过select N来连接不同的数据库
databases 16
#保存数据到disk的策略
#当有一条Keys数据被改变是,900秒刷新到disk一次
save 900 1
#当有10条Keys数据被改变时,300秒刷新到disk一次
save 300 10
#当有1w条keys数据被改变时,60秒刷新到disk一次
save 60 10000
#当dump .rdb数据库的时候是否压缩数据对象
rdbcompression yes
#dump数据库的数据保存的文件名
dbfilename dump.rdb
#Redis的工作目录
dir /home/falcon/redis-2.0.0/
########### Replication #####################
#Redis的复制配置
# slaveof <masterip> <masterport>
# masterauth <master-password>
############## SECURITY ###########
# requirepass foobared
############### LIMITS ##############
#最大客户端连接数
# maxclients 128
#最大内存使用率
# maxmemory <bytes>
########## APPEND ONLY MODE #########
#是否开启日志功能
appendonly no
# 刷新日志到disk的规则
# appendfsync always
appendfsync everysec
# appendfsync no
################ VIRTUAL MEMORY ###########
#是否开启VM功能
vm-enabled no
# vm-enabled yes
vm-swap-file logs/redis.swap
vm-max-memory 0
vm-page-size 32
vm-pages 134217728
vm-max-threads 4
############# ADVANCED CONFIG ###############
glueoutputbuf yes
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
#是否重置Hash表
activerehashing yes
Redis主从配置
REDIS主从配置相当简单,一些文章啰里罗嗦的写了一大篇,其实就两句话:
打开从机的redis.conf
Port 6380 (注:不能跟主机的一样)
Sleverof 192.168.194.102 6379 (注:ip为主机IP,6379为主机REDIS端口号)
先重启主机,再重启从机
做了简单测试:
<?php
$redis=new Redis();
$redis->connect('192.168.194.102',6379);
$redis->set('test','hello redis');
echo 'From master:'.$redis->get('test').'<br>';
$redis_salve=new Redis();
$redis_salve->connect('192.168.194.103',6380);
echo 'From salve:'.$redis_salve->get('test').'<br>';
?>
执行结果:
From master:hello redis
From salve:hello redis
-----------------------------------
可以看出在从机上也有数据了,现在我把主机关掉,看是否还能读出从机的数据呢?
Stopping redis-server: redis-server.
测试代码:
<?php
$redis_salve=new Redis();
$redis_salve->connect('192.168.194.103',6380);
echo 'From salve:'.$redis_salve->get('test').'<br>';
?>
运行结果:
From salve:hello redis
说明,主机当掉后,还能继续从从机中获取数据,但是,如果测试代码中有连接主机的代码时候,会导致不正确。
(原文转自: http://www.cnblogs.com/ikodota/archive/2012/03/02/redis_config.html)
-----------------------------------------------------------
开启主机后,关闭从机,只能从主机获取数据,从机上获取不到数据。