Redis集群配置和部署 spring整合redisCluster
来源:互联网 发布:淘宝联盟好还是一淘 编辑:程序博客网 时间:2024/06/07 03:03
Redis集群配置和部署
1. 下载redis3.0
2. 上传服务器,解压,编译(前两步与之前相同)http://blog.csdn.net/liguangyan_neu/article/details/78026932 参考2.1节
3. 创建集群需要的目录
mkdir /usr/local/cluster
cd /usr/local/cluster
mkdir 7000 7001 7002 7003 7004 7005
4. 修改配置文件redis.conf
cp /usr/local/redis3.0.5/redis.conf /usr/local/cluster
vi redis.conf
修改配置文件中如下选项
port 7000
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
修改完配置文件后将redis.conf文件分别拷贝至7000、7001……7005目录下
cp /usr/local/cluster/redis.conf /usr/local/cluster/7000
cp /usr/local/cluster/redis.conf /usr/local/cluster/7001
cp /usr/local/cluster/redis.conf /usr/local/cluster/7002
cp /usr/local/cluster/redis.conf /usr/local/cluster/7003
cp /usr/local/cluster/redis.conf /usr/local/cluster/7004
cp /usr/local/cluster/redis.conf /usr/local/cluster/7005
拷贝结束之后分别修改对应的配置文件中的端口port为对应的端口号
5. 分别启动六个redis实例
/usr/local/redis-3.0.5/src/redis-server /usr/local/cluster/7000/redis.conf
/usr/local/redis-3.0.5/src/redis-server /usr/local/cluster/7001/redis.conf
/usr/local/redis-3.0.5/src/redis-server /usr/local/cluster/7002/redis.conf
/usr/local/redis-3.0.5/src/redis-server /usr/local/cluster/7003/redis.conf
/usr/local/redis-3.0.5/src/redis-server /usr/local/cluster/7004/redis.conf
/usr/local/redis-3.0.5/src/redis-server /usr/local/cluster/7005/redis.conf
查看启动情况
ps -ef|grep redis
6. 升级ruby安装gem
http://jingyan.baidu.com/article/b7001fe173fe9a0e7382dd57.html
7. gem安装redis ruby接口
http://storysky.blog.51cto.com/628458/1155353/
8. 执行redis创建集群命令创建集群
/usr/local/redis-3.0.5/src/redis-trib.rb create --replicas 1 192.168.1.191:7000 192.168.1.191:7001 192.168.1.191:7002 192.168.1.191:7003 192.168.1.191:7004 192.168.1.191:7005
9. 进入集群环境使用redis-cli
/usr/local/redis-3.0.5/src/redis-cli -c -h 192.168.1.191 -p 7000
10. RedisCluster客户端(Jedis)
使用spring集成JedisCluster连接Redis3.0集群
Ø Maven依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
</dependency>
Ø 增加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="xxx.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>
Ø 增加connect-redis.properties配置文件
address1=192.168.1.191:7000
address2=192.168.1.191:7001
address3=192.168.1.191:7002
address4=192.168.1.191:7003
address5=192.168.1.191:7004
address6=192.168.1.191:7005
Ø 增加java类JedisClusterFactory
1. import java.util.HashSet;
2. import java.util.Properties;
3. import java.util.Set;
4. import java.util.regex.Pattern;
5.
6. import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
7. import org.springframework.beans.factory.FactoryBean;
8. import org.springframework.beans.factory.InitializingBean;
9. import org.springframework.core.io.Resource;
10.
11. import redis.clients.jedis.HostAndPort;
12. import redis.clients.jedis.JedisCluster;
13.
14. public class JedisClusterFactory implements FactoryBean<JedisCluster>, InitializingBean {
15.
16. private Resource addressConfig;
17. private String addressKeyPrefix ;
18.
19. private JedisCluster jedisCluster;
20. private Integer timeout;
21. private Integer maxRedirections;
22. private GenericObjectPoolConfig genericObjectPoolConfig;
23.
24. private Pattern p = Pattern.compile("^.+[:]\\d{1,5}\\s*$");
25.
26. @Override
27. public JedisCluster getObject() throws Exception {
28. return jedisCluster;
29. }
30.
31. @Override
32. public Class<? extends JedisCluster> getObjectType() {
33. return (this.jedisCluster != null ? this.jedisCluster.getClass() : JedisCluster.class);
34. }
35.
36. @Override
37. public boolean isSingleton() {
38. return true;
39. }
40.
41.
42.
43. private Set<HostAndPort> parseHostAndPort() throws Exception {
44. try {
45. Properties prop = new Properties();
46. prop.load(this.addressConfig.getInputStream());
47.
48. Set<HostAndPort> haps = new HashSet<HostAndPort>();
49. for (Object key : prop.keySet()) {
50.
51. if (!((String) key).startsWith(addressKeyPrefix)) {
52. continue;
53. }
54.
55. String val = (String) prop.get(key);
56.
57. boolean isIpPort = p.matcher(val).matches();
58.
59. if (!isIpPort) {
60. throw new IllegalArgumentException("ip 或 port 不合法");
61. }
62. String[] ipAndPort = val.split(":");
63.
64. HostAndPort hap = new HostAndPort(ipAndPort[0], Integer.parseInt(ipAndPort[1]));
65. haps.add(hap);
66. }
67.
68. return haps;
69. } catch (IllegalArgumentException ex) {
70. throw ex;
71. } catch (Exception ex) {
72. throw new Exception("解析 jedis 配置文件失败", ex);
73. }
74. }
75.
76. @Override
77. public void afterPropertiesSet() throws Exception {
78. Set<HostAndPort> haps = this.parseHostAndPort();
79.
80. jedisCluster = new JedisCluster(haps, timeout, maxRedirections,genericObjectPoolConfig);
81.
82. }
83. public void setAddressConfig(Resource addressConfig) {
84. this.addressConfig = addressConfig;
85. }
86.
87. public void setTimeout(int timeout) {
88. this.timeout = timeout;
89. }
90.
91. public void setMaxRedirections(int maxRedirections) {
92. this.maxRedirections = maxRedirections;
93. }
94.
95. public void setAddressKeyPrefix(String addressKeyPrefix) {
96. this.addressKeyPrefix = addressKeyPrefix;
97. }
98.
99. public void setGenericObjectPoolConfig(GenericObjectPoolConfig genericObjectPoolConfig) {
100. this.genericObjectPoolConfig = genericObjectPoolConfig;
101. }
102.
103. }
Ø 使用时直接注入
@Autowired
JedisCluster jedisCluster;
阅读全文
0 0
- Redis集群配置和部署 spring整合redisCluster
- Redis RedisCluster Spring整合
- spring整合redis集群配置
- Redis-3.x集群配置(RedisCluster+SpringBoot+Jedis)
- Redis-3.2.4集群配置(RedisCluster+SpringBoot+Jedis)
- Redis-3.2.4集群配置(RedisCluster+SpringBoot+Jedis)
- redis和spring集群配置
- redis集群搭建以及和spring整合
- spring和redis集群的整合
- Xmemcached集群配置使用和Spring整合
- Xmemcached集群配置使用和Spring整合
- spring整合redis集群的相关配置(senlient模式)
- spring 整合 redis cluster集群
- spring整合redis(集群、主从)
- spring redis集群配置
- redis 集群介绍就,安装详细步骤,和spring 整合
- Redis的安装、部署和与Spring Cache整合
- redis和spring整合
- 二维码识别库移植到嵌入式海思平台
- mybatis与数据库的两种交互方式
- 浅谈矩阵分解在推荐系统中的应用
- 和菜鸟一起学linux之我的vim简单配置
- Java 集合
- Redis集群配置和部署 spring整合redisCluster
- 鼠标事件
- AD
- 在retrofit+Rxjava中如何取得状态码非200(出现错误)时的response里的body
- 侧滑框
- 关于C++中char 型变量的地址输出
- CSS行高(line-height)及文本垂直居中原理
- Python自动化(四)插入排序
- hbase表迁移问题汇总