高性能web 架构之redis 缓存集群


redis 集群

介绍

redis是一个key-value内存数据库。它支持存储的value类型包括字符串、list(链表)set(集合)、有序集合和hash(哈希类型)。这些数据类型都支持push/popadd/remove redis支持各种不同方式的排序。redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。

 

Redis 集群是3.0以上才支持的

 

 

架构::

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.

(3)客户端与redis节点直连,不需要中间proxy.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot,cluster 负责维护node<->slot<->key

 

安装redis

1.        首先下载https://codeload.github.com/antirez/redis/tar.gz/3.0.0-rc2

解压

修改配置文件

daemonize yes
port 6381
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

2.        进入到redis 目录,进行编译

make install

高性能web 架构之redis 缓存集群_第1张图片

3.     redis 创建集群至少三个master 三个slave所以最少要有六个实例。否则创建集群会提示。本文使用两台机器,每台三个实例。也可以使用一个机器创建六个实例。

4.     如果创建过程正卡在Waiting for the cluster tojoin.......................................。需要修改配置文件中的bind 127.0.0.1修改成对应机器的IP地址。并在创建集群的时候使用IP。这个属性是回路IP,也就是其他节点访问本节点用的。所以多台机器要修改成在局域网的IP

 

5.    复制三个到第一台机器,并修改对应配置文件的端口,分别为638163826383

然后启动前三个

./src/redis-server redis.conf

高性能web 架构之redis 缓存集群_第2张图片

6.    安装ruby

yum install ruby

安装rubygems

yum install rubygems

gem install redis

高性能web 架构之redis 缓存集群_第3张图片

高性能web 架构之redis 缓存集群_第4张图片

7.    安装并运行第二台机器的后三个,复制到第二台机器三个并修改端口号分别为638463856386,并执行步骤6安装ruby

高性能web 架构之redis 缓存集群_第5张图片

集群配置

1.    运行集群命令

./src/redis-trib.rb create –replicas 1  192.168.1.121:6381 192.168.1.121:6382192.168.1.121:6383 192.168.1.120:6384 192.168.1.120:6385 192.168.1.120:6386

2.    出现提示,输入yes

 

高性能web 架构之redis 缓存集群_第6张图片

 

到此集群就创建完了

使用客户端访问缓存

下载

 

下载jedis-jedis-2.7.2.zip commons-pool2-2.4.2-bin.zip

 

http://apache.opencas.org//commons/pool/binaries/commons-pool2-2.4.2-bin.zip

 

https://codeload.github.com/xetorthio/jedis/zip/jedis-2.7.2

 

jedis 下载只有源码,需要自己编译成jar

 

配置spring

<bean name="genericObjectPoolConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig">

         <property name="maxWaitMillis"value="-1" />

         <property name="maxTotal"value="1000" />

         <property name="minIdle"value="8" />

         <property name="maxIdle"value="100" />

bean>

 

<bean id="jedisCluster"class="redis.client.factory.JedisClusterFactory">

         <property name="addressConfig">

              <value>classpath:connect-redis.propertiesvalue>

         property>

         <property name="addressKeyPrefix"value="address" />  

         <property name="timeout"value="300000" />

         <property name="maxRedirections"value="6" />

         <property name="genericObjectPoolConfig"ref="genericObjectPoolConfig" />

bean>

测试

 

写入缓存

高性能web 架构之redis 缓存集群_第7张图片

读取缓存

高性能web 架构之redis 缓存集群_第8张图片

你可能感兴趣的:(高性能web 架构之redis 缓存集群)