docker搭建redis集群

更新日期: 2019-08-02阅读: 3.8k标签: redis

1、 从docker库获取ruby镜像

docker pull ruby


2、创建虚拟网卡

docker network create redis-net


3、查看网卡信息

docker network ls


4、查看redis-net虚拟网卡网关ip

docker network inspect redis-net | grep "Gateway" | grep --color=auto -P '(\d{1,3}.){3}\d{1,3}' -o


5、创建需要挂载的目录以及文件

#创建集群挂载目录
mkdir -p /docker/redis
#创建 集群配置文文件模板
touch /docker/redis/redis-cluster.conf
#编辑配置文件模板内容

port ${PORT}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.100.101
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes


6、在/docker/redis目录下创建一个sh脚本文件

touch create_conf.sh

编辑脚本内容为:

#!/bin/bash
for port in `seq 6001 6006`; do
mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis-cluster.conf > ./${port}/conf/redis.conf && mkdir -p ./${port}/data;done

授权可执行 chmod -R 777 create_conf.sh


7、执行脚本创建挂载目录以及配置文件

./create_conf.sh


8、编辑启动容器脚本(启动6个容器)

touch create_redis_docker.sh

编辑内容为

#!/bin/bash
for port in `seq 6001 6006`; do
docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} -v /docker/redis/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /docker/redis/${port}/data:/data  --restart always --name redis-${port} --net redis-net --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf;
done

授权 chmod -R 777 create_redis_docker.sh


9、执行创建容器的脚本

./create_redis_docker.sh


10、构建Redis集群(通过ruby脚本来实现集群)

echo yes | docker run -i --rm --net redis-net ruby sh -c ' gem install redis && wget http://download.redis.io/redis-stable/src/redis-trib.rb && ruby redis-trib.rb create --replicas 1 '"$(for port in `seq 6001 6006`; do  echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' ' ;  done)"

下载redis.conf

cd /docker/redis/
wget http://download.redis.io/redis-stable/redis.conf

链接: https://www.fly63.com/article/detial/4465

在使用redis-cluster之前你需要知道这些事

前段时间基础架构组、DBA还有云盘团队一起推广了phpredis的RedisCluster的线上使用,目前线上业务已经稳定,单业务的规模水平是:Qps平均15W,数据量在700G左右。现对这段时间的工作和所遇到的一些常见问题进行简单总结

Redis 5种主要数据类型和命令

redis常用数据结构strig、list、hash、set、zset,这是最常用的5中redis数据结构,其实还有些不太常用的数据结构比如:HyperLogLog、GeoHash、PubSub等

Redis可视化管理工具有哪些?

redis 是当前非常流行的缓存数据库,得益于其简单的 key-value 模式的数据存储和丰富的数据类型与事件机制使得 redis 成为当前后端开发中不可或缺的利器。下面推荐一些好用的 redis 的管理工具

Redis 中 Lua 脚本的应用和实践

前段时间组内有个投票的产品,上线前考虑欠缺,导致被刷票严重。后来,通过研究,发现可以通过 redis lua 脚本实现限流,这里将 redis lua 脚本相关的知识分享出来,讲的不到位的地方还望斧正。

Redis在Php项目中的实际应用场景

Redis在Php项目中的实际应用场景:商品维度计数、用户维度计数、存储社交关系、用作缓存代替memcached、反spam系统、用户Timeline/Feeds、最新列表&排行榜、消息通知、将Redis用作消息队列

PHP使用redis防止大并发下二次写入

php调用redis进去读写操作,大并发下会出现:读取key1,没有内容则写入内容,但是大并发下会出现同时多个php进程写入的情况,这个时候需要加一个锁,即获取锁的php进程有权限写。

Redis的主从复制

Redis配置成主从模式,主库(Master)只负责写数据,从库(Slave)只负责读数据。一个主库可以拥有多个从库,但一个从库只能隶属于一个主库。

Redis常用命令

连接操作命令,持久化,远程服务控制,对value操作的命令,String,List,Set,Hash,Redis 发布订阅命令,Redis 事务命令,查看keys个数,清空数据库

分布式锁的redis缓存使用方式

目前有很多成熟的缓存产品,包括Redis,memcached等。这里以Redis为例来分析下使用缓存实现分布式锁的方案。主要的实现方式是使用Jedis.setNX方法来实现。以上实现方式同样存在几个问题:

Redis的正确使用姿势

说到分布式缓存,可能大多数人脑海浮现的就是redis了,为什么redis能够在竞争激烈的缓存大战中脱颖而出呢?原因无非有一下几点:性能好,丰富的特性跟数据结构,api操作简单。但是用的人多了,就会出现很多不规范或者疏忽的地方,严重的时候甚至会导致生产事故

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!