Redis3集群搭建
来源:互联网 发布:古典气质知乎 编辑:程序博客网 时间:2024/05/17 03:25
1、redis简介
redis是一个key-value存储系统。和memcache类似,它支持存储value类型相对更多,包括String,list,set,sortset,这些数据类型都支持push/pop,add/remove及取交际并集差集等更丰富的操作,并且这些操作都是原子性的。与memcache一样,为了保证效率,数据都缓存在内存中。但redis为了进行数据持久化操作,会周期性的把数据写入磁盘(RDB)、或吧修改操作写入追加的记录文件(AOF)。
redis是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcache这类keyvalue存储的不足,在部分场合对关系库起到了很好的补充作用。
2、redis3的安装
redis-3.2.5.tar.gz
- 安装依赖gcc,ruby,rubygems
- 安装redisgems
[root@CentOSA gem]gem install -l redis-3.2.1.gem
安装redis-3.0.5
[root@CentOSA ~]# tar -zxf redis-3.0.5.tar.gz -C /usr/
[root@CentOSA redis-3.2.5]# make访问redis
[root@CentOSA redis-3.2.5]# ./src/redis-cli -p 【6379】
3、redis3的集群搭建
开启AOF、Cluster
appendonly yes
cluster-enabled yes搭建集群
[root@CentOSA redis-3.2.5]# ./src/redis-trib.rb create –replicas 1 [ip(n):port(n)]
查看集群状况以及测试
[root@CentOSA redis-3.2.5]# ./src/redis-trib.rb check [ip:port]
[root@CentOSA redis-3.2.5]# ./src/redis-cli -p [port] -c -h [ip]集群配置
负载均衡
[root@CentOSA redis-3.2.5]# ./src/redis-trib.rb reshard 192.168.111.129:6379
扩展集群
[root@CentOSA redis-3.2.5]# ./src/redis-trib.rb add-node [(new)ip:port] [(old)ip:port]
附注:新机器将会被作为主机添加到集群。
[root@CentOSA redis-3.2.5]# ./src/redis-trib.rb add-node –slave [(new)ip:port] [(old)ip:port]
附注:随机给从机最少的主机添加从机
[root@CentOSA redis-3.2.5]#./src/redis-trib.rb add-node –slave –master-id [nodeid] [(new)ip:port] [(old)ip:port]
附注:给指定的主机添加从机
删除节点
[root@CentOSA redis-3.2.5]# ./src/redis-trib.rb del-node [(old)ip:port] [nodeid]
附注:默认只能删除从机 ,如果没有hash slots主机也可以删除。
将对应从机升级为主机
[root@CentOSA redis-3.2.5]# ./src/redis-cli -p 6382 -c -h 192.168.111.129
192.168.111.129:6382> CLUSTER FAILOVER
更改从机的所属主机
[root@CentOSA redis-3.2.5]# ./src/redis-cli -p 6379 -c -h 192.168.111.129
192.168.111.129:6379> CLUSTER REPLICATE [nodeid]
4、 通过jedis操作redis3集群
代码如下
public class RedisAndJavaTest5 { public static void main(String[] args) { //添加节点 Set<HostAndPort> nodes=new HashSet<HostAndPort>(); nodes.add(new HostAndPort("192.168.0.185", 6379)); nodes.add(new HostAndPort("192.168.0.185", 6380)); nodes.add(new HostAndPort("192.168.0.185", 6381)); nodes.add(new HostAndPort("192.168.0.185", 6382)); nodes.add(new HostAndPort("192.168.0.185", 6383)); nodes.add(new HostAndPort("192.168.0.185", 6384)); nodes.add(new HostAndPort("192.168.0.185", 6385)); //获得cluster JedisCluster cluster=new JedisCluster(nodes); //测试get方法 String string = cluster.get("user:1"); System.out.println(string); cluster.close(); }}
5、通过SpringData操作redis3集群
spring工厂配置文件
<!-- cluster配置 --><bean id="redisClusterConfiguration" class="org.springframework.data.redis.connection.RedisClusterConfiguration"> <constructor-arg index="0"> <list> <value>192.168.111.129:6379</value> . . </list> </constructor-arg></bean><!-- 创建jedis连接工厂 --><bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> <constructor-arg index="0" ref="redisClusterConfiguration"></constructor-arg></bean><!-- 构造RedisTemplate --><bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="jedisConnectionFactory"/></bean>
代码如下
public class StringData { public static void main(String[] args) { //通过Spring获得redisTemplate对象 @SuppressWarnings("resource") ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml"); RedisTemplate redisTemplate = (RedisTemplate) ac.getBean("redisTemplate"); //测试redisTemplate对象获得opsValue对redis进行简单操作 ValueOperations opsForValue = redisTemplate.opsForValue(); opsForValue.set("spring:2", "spring2"); String name = (String) opsForValue.get("spring:1"); System.out.println(name); //redisTemplate对象可以获得不同数据类型的操作对象 ListOperations opsForList = redisTemplate.opsForList(); SetOperations opsForSet = redisTemplate.opsForSet(); HashOperations opsForHash = redisTemplate.opsForHash(); ZSetOperations opsForZSet = redisTemplate.opsForZSet(); }}
注:对cluster集群的支持是spring4较新版本的特性,以前的版本还不支持上述操作
- redis3.0搭建集群
- redis3.0集群搭建
- Redis3.0.6集群搭建
- Redis3.x-集群搭建
- Redis3集群搭建
- Redis3.0集群搭建
- redis3.0集群搭建
- Redis3.0集群搭建
- redis3.0集群搭建
- Redis3.x-集群搭建
- Redis3.x-集群搭建
- Redis3.0.1集群环境搭建
- redis3.0搭建分布式集群
- Redis3.0《集群环境搭建》
- Redis3.x集群的搭建
- Redis3.0-集群环境搭建
- redis3.2.2单机集群搭建
- Redis3.0.7 服务端集群搭建
- 二叉树的建立
- 【leetcode 237】 Delete Node in a Linked List (C++)
- MySQL使用总结
- c++ vector
- OCP11G 051 第169题
- Redis3集群搭建
- What's the WAR
- 【jzoj4906】【NOIP2016提高组】【组合数问题】【数论】
- layer mobile的使用问题
- java入门2-语言基础之关键字,标识符,注释,常量和变量
- 11月英语总结
- 算法竞赛入门经典 例题 6-12 油田(Oil Deposits, UVa 572)
- javaweb开发要学习的所有技术和框架总结:
- strong,weak,retain,assign,copy nomatic 等的区别