高性能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


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


6.    安装ruby

yum install ruby

安装rubygems

yum install rubygems

gem install redis



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


集群配置

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

 

 

到此集群就创建完了

使用客户端访问缓存

下载

 

下载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.properties</value>

         </property>

         <property name="addressKeyPrefix"value="address" />   <!--  属性文件里  key的前缀 -->

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

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

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

</bean>

测试

 

写入缓存


读取缓存


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值