一、什么是redis?
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
二、redis如何安装
下面是redis的安装教程
安装环境:
两台虚拟机都是Centos 7.0
IP分别为:192.168.149.132 192.168.149.133
Redis采用的版本是redis-3.2.4
集群是采用两台虚拟机模拟8个节点,一台机器4个节点,创建出4 master、4salve 环境。
1、首先在192.168.149.132上安装单机版
下载安装包:
wget http://download.redis.io/releases/redis-3.2.4.tar.gz
解压:
tar –xvf redis-3.2.4.tar.gz
进入安装目录进行安装,注意要使用有root权限的账户进行操作,因为在安装过程中需要操作许多系统文件路径,如果没有权限则会安装报错。
make && make install
其中有许多依赖包,如果缺就安装即可,一般不会缺。
至此单机redis安装完毕,接下来启动服务:
cd src
./redis-server
Ok服务启动成功
接下来我们小小测试一下。没问题!
一般redis我们经常做为消息服务器使用,如下:
当然redis作为消息服务器有更加复杂的应用,可以自己去摸索。
三、集群配置
在192.168.149.133上同样安装redis
拷贝文件:
redis-trib.rb是官方提供的一款集群工具,后面要用
创建redis节点:
在redis安装目录下创建 redis_cluster目录
在 redis_cluster 目录下,创建名为7010、7011、7012、7013的目录
并将 redis.conf 拷贝到这三个目录中,分别修改这三个redis.conf配置文件,修改内容如下:
port 7010 //端口7010 7011 7012 7013
bind 本机ip //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize yes //redis后台运行
pidfile /var/run/redis_7010.pid //pidfile文件对应
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7010.conf //集群的配置 配置文件首次启动自动生成
cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
启动集群服务:
查看启动情况:
没有问题
Redis 官方提供了 redis-trib.rb 这个工具,就在解压目录的 src 目录中,之前已将它复制到 /usr/local/bin 目录中,可以直接在命令行中使用了。使用下面这个命令即可完成集群。
redis-trib.rb create –replicas 1 192.168.149.133:7010 192.168.149.133:7011 192.168.149.133:7012 192.168.149.133:7013 192.168.149.132:7014 192.168.149.132:7015 192.168.149.132:7016 192.168.149.132:7017
报错了,因为这个工具是用 ruby 实现的,所以需要安装 ruby。
安装ruby:
yum install ruby ruby-devel rubygems rpm-build
gem install redis
安装成功后执行之前的命令,又报错了:
redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口
集群总线端口为redis客户端连接的端口 + 10000
修改防火墙配置将端口加入进去,注意两台虚拟机都需要:
cd /etc/sysconfig
vi iptables
保存后重启防火墙
ps:如果没有iptables-services服务的话,可以先安装:yum install iptables-services
好了,现在再次创建集群:
终于配置成功启动
ps:这里一不小心就有个巨坑错误如下:
提示某个节点不为空,让你去检查,其实这里是因为我们在上一次启动配置或者redis非正常停止的时候,有生成过一些.aof或者.rdb文件,只需要删除掉就ok。
网上有相关方法,如果碰到可以针对性的去找找。
接下来我们试试是否可以使用了。
使用192.168.149.133的7011节点输入数据,7010节点监听
中文居然被转译了,再来一次
注:内容来自百度百科与cnblogs博客