1.为什么用到Redis?2016-05-0815:54:43
- 在DWCS项目中需要使用到Redis数据库作为多个worker节点与Master节点进行数据交换的关键实现,因为Redis的<key,value>存储模式,可以很好地与MapReduce模型的实现——mincemeat.py 很好的搭配,实现数据的传输以及节点的通信。
- 而且Redis的数据是先写入内存来进行读取,速度很快,方便快捷是节省数据读取,尤其是数据量很大的情况下,的一种很好的方式。
- Redis的Master 与 slave作为主从的配置,主从复制机制可以使得Master 作为 数据“发布者”,对多个Slave (数据“订阅者”)进行数据的更新,只要 slave 节点 向master申请进行数据同步sync请求, master 节点 的server便会开启一个后台程序,备份master的Redis数据库作为一个文件(记为 backups),如果在server备份还未完成时,Master节点上有Redis的客户端client连接其server并进行读写操作,这个时候Master并不会阻塞client的读写,此时两个进程(client和备份进程)都同步运行。<master 备份时的非阻塞>
- master 可以连接多台slave,但是读写数据是分离的,master复制数据库的“写”,slave则是只有“读”的权限。(这里说的读写操作对象是master节点上的Redis数据库),如果在slave上进行数据的写操作,那么数据只存在slave本地的数据库中,也就是 <在master上set数据,在slave上可以get到数据;在slave上set数据,在master上是get不到的>。 可以说这种master--slave的形式部署是一种 数据的单向树状传输图 。 但是由于DWCS项目的数据是需要 多对一 的数据传输——所有worker节点将解析出来的url汇集给master节点处理,而Redis是 一对多的“master--slaves”模式 ,而且< 一台slave无法连接多台master > . 所以使用“在Master节点上部署Redis服务器,在worker节点上部署Redis的client,连接Master的Redis服务器,进行 多client-->master 的客户端群连接更新数据库”。这样做:
- 优点:在同一个Redis Server上进行每个worker节点client端数据的更新,快捷方便,简单。
- 缺点:不安全,由于Redis是存在内存中的,运算速度快,方便Redis Server 密码的暴力破解;多客户端保存数据容易发生误操作或者数据被其他客户端写入相同的key值而被覆盖的情况。
- 解决:设置密码?在存入数据前先对数据进行加密?在存入数据前判断是否key值重复,设置自动增长的key值避免重复?
2.Redis的配置
目前支持Windows的Redis是非官方的 微软Redis版本( MSOpenTech / redis ),下载解压后,有以下文件:
其中的redis.windows.conf便是需要更改的配置文件。打开 、
原文 http://www.cnblogs.com/f00ly/p/5470777.html