redis 是一个内存数据库,但会再磁盘生成镜像
特点
实战
安装
基本命令
redis主从
redis的主从同步是异步的,也就是说slave可能用旧的数据提供服务(来不及从master同步)
语法
默认主可读可写,从只读
redis 使用异步复制。从 redis 2.8 开始,slave 也会周期性的告诉 master 现在的数据量。可能只是个机制,用途应该不大。
一个 master 可以拥有多个 slave,废话,这也是业界的标配吧。
slave 可以接收来自其他 slave 的连接。意思是不是就是说 slave 在接收其他的slave的连接之后成为 master ?等下我们来验证。
redis 复制在 master 这一端是非阻塞的,也就是说在和 slave 同步数据的时候,master 仍然可以执行客户端的操作命令而不受其影响。这点都不能保证,要你干嘛?
redis 复制在 slave 这一端也是非阻塞的。在配置文件里面有 slave-serve-stale-data 这一项,如果它为 yes ,slave 在执行同步时,它可以使用老版本的数据来处理查询请求,如果是 no ,slave 将返回一个错误。在完成同步后,slave 需要删除老数据,加载新数据,在这个阶段,slave 会阻止连接进来。
salve的扩展性很强,可以为master分担一些很耗资源的查询操作。salve也可以简单的用来为mater做一个备份
salve可以代替master把全部的数据集写入磁盘而造成的开销。因此可以把 master 中 save 配置项全部注释掉,不让它进行保存,然后配置 slave ,让 slave 保存。虽然有这个特性,但是我们好像一般不这么做。
客户端连接(python版)
下载python sdk:http://redis.io/clients#python
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
r.set('foo', 'hello')
print r.get('foo')
集群