Docker中实现redis分片
来源:互联网 发布:装修软件哪个好 编辑:程序博客网 时间:2024/06/05 07:55
首先基于基础CentOS7或以上版本, 装好docker后,拉取最新redis版本,代码如下:
docker search redis #镜像库提供的多个镜像docker pull redis #拉取最后版本的docker-redis镜像docker pull redis:4.0.0 #拉取指定版本的redis镜像docker images #查看已经拉取的镜像
启动三个redis实例用以分片
docker run -d --name redis7000 -p 7000:6379 redis:0.0.1docker run -d --name redis7001 -p 7001:6379 redis:0.0.1docker run -d --name redis7002 -p 7002:6379 redis:0.0.1#-d : container将会运行在后台模式(detached mode)#--name : 实例名称#-p : 对外程序访问端口7000,宿主机映射的redis端口6379,最后的redis为镜像的名称
在Linux中打开响应端口7000,7001,7002.代码如下:
(CentOS7)systemctl stop firewalld.service #关闭防火墙服务disable firewalld.service #禁止防火墙开启启动systemctl restart iptables.service #重启防火墙使配置生效systemctl enable iptables.service #设置防火墙开机启动systemctl restart docker #重启docker服务或(CentOS6)iptables -I INPUT -p tcp --dport 7000 -j ACCEPTiptables -I INPUT -p tcp --dport 7001 -j ACCEPTiptables -I INPUT -p tcp --dport 7002 -j ACCEPT
查看docker实例
docker ps #查看当前运行的dockeriddocker ps -a #查看已有的可能状态是停止docker start b193fbe1e400 #开启实例,如重启可能实例被关闭docker stop b193fbe1e400 #停止实例docker rm –f 0cfc4932b9a0 #删除运行的docker,-f强制删除docker rmi xcfc4932b9a0 #删除镜像
进入docker内部,代码如下 :
docker exec -it 0cfc4932b9a0 bash#进入docker内部,-it输入输出,展示信息在控制台
编写java代码来测试下
package test;import java.util.ArrayList;import java.util.List;import org.junit.Test;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPoolConfig;import redis.clients.jedis.JedisShardInfo;import redis.clients.jedis.ShardedJedis;import redis.clients.jedis.ShardedJedisPool;public class TestRedis { @Test //完成单实例链接 public void jedis(){ Jedis jedis = new Jedis("192.168.80.38",7000); //jedis.auth("123456"); jedis.set("name","tony"); //调用redis命令set String s = jedis.get("name"); System.out.println(s); jedis.close(); } @Test //分片 public void shard(){ //构造各个节点链接信息,host和port List<JedisShardInfo> infoList = new ArrayList<JedisShardInfo>(); JedisShardInfo info1 = new JedisShardInfo("192.168.80.22",7000); infoList.add(info1); JedisShardInfo info2 = new JedisShardInfo("192.168.80.22",7001); infoList.add(info2); JedisShardInfo info3 = new JedisShardInfo("192.168.80.22",7002); infoList.add(info3); //分片jedis JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(500); //最大链接数 ShardedJedisPool pool = new ShardedJedisPool(config, infoList); //ShardedJedis jedis = new ShardedJedis(infoList); ShardedJedis jedis = pool.getResource(); //从pool中获取 for(int i=0;i<10;i++){ jedis.set("n"+i, "t"+i); } System.out.println(jedis.get("n9")); jedis.close(); } }
另附上redis配置文件:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"> <!-- 构建连接池配置信息 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!-- 最大连接数 --> <property name="maxTotal" value="${redis.maxTotal}" /> </bean> <bean id="jedisShardInfo1" class="redis.clients.jedis.JedisShardInfo"> <constructor-arg index="0" value="${redis.node1.ip}" /> <constructor-arg index="1" value="${redis.node1.port}" type="int" /><!-- 如果不声明类型,按字符串对待,调用格式就不对,默认赵6379端口 --> </bean> <bean id="jedisShardInfo2" class="redis.clients.jedis.JedisShardInfo"> <constructor-arg index="0" value="${redis.node2.ip}" /> <constructor-arg index="1" value="${redis.node2.port}" type="int" /> </bean> <bean id="jedisShardInfo3" class="redis.clients.jedis.JedisShardInfo"> <constructor-arg index="0" value="${redis.node3.ip}" /> <constructor-arg index="1" value="${redis.node3.port}" type="int" /> </bean> <!-- 定义集群连接池 --> <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool" destroy-method="close"> <constructor-arg index="0" ref="jedisPoolConfig" /> <constructor-arg index="1"> <list> <ref bean="jedisShardInfo1" /> <ref bean="jedisShardInfo2" /> <ref bean="jedisShardInfo3" /> </list> </constructor-arg> </bean></beans>
redis.properties
redis.maxTotal=50redis.node1.ip=192.168.80.22redis.node1.port=7000redis.node2.ip=192.168.80.22redis.node2.port=7001redis.node3.ip=192.168.80.22redis.node3.port=7002
阅读全文
0 0
- Docker中实现redis分片
- 基于Jedis实现Redis分片的理解
- redis预分片技术及实现
- 基于Jedis实现Redis分片的理解
- docker中使用redis
- docker中运行redis
- Docker中部署Redis
- Redis分片
- Redis-分片
- Redis-分片
- redis分片:
- redis分片
- redis分片
- Windows下 redis 启动多实例(redis分片实现)
- Docker实现一个Redis cluster
- docker中使用redis记录
- docker中部署redis集群
- Redis 高可用: twemproxy实现缓存服务器分片集群
- 如何运行vue项目
- DAY3 T3
- 20170713
- python 进程的使用、multiprocessing、Process
- java.lang.NoClassDefFoundError 和 java.lang.ClassNotFoundException 错误分析
- Docker中实现redis分片
- HTTP协议知多少-关于http1.x、http2、SPDY的相关知识
- Calendar 获取下周一的日期
- android不让程序显示在最近程序列表中
- java实现通过快速排序来查找数组中第n大的元素
- PAT甲级 1040
- 606. Construct String from Binary Tree
- Java包装类
- 【Redis笔记】5.List(L)