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# masterauth ############## SECURITY ########### # requirepass foobared ############### LIMITS ############## #最大客户端连接数 # maxclients 128 #最大内存使用率 # maxmemory ########## 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端口号)
先重启主机,再重启从机
做了简单测试:
connect('192.168.194.102',6379); $redis->set('test','hello redis'); echo 'From master:'.$redis->get('test').''; $redis_salve=new Redis(); $redis_salve->connect('192.168.194.103',6380); echo 'From salve:'.$redis_salve->get('test').''; ?>
执行结果:
From master:hello redis
From salve:hello redis-----------------------------------
可以看出在从机上也有数据了,现在我把主机关掉,看是否还能读出从机的数据呢?
Stopping redis-server: redis-server.
测试代码:
connect('192.168.194.103',6380); echo 'From salve:'.$redis_salve->get('test').''; ?>
运行结果:
From salve:hello redis
说明,主机当掉后,还能继续从从机中获取数据,但是,如果测试代码中有连接主机的代码时候,会导致不正确。
-----------------------------------------------------------
开启主机后,关闭从机,只能从主机获取数据,从机上获取不到数据。