首页 >>  正文

redis集群模式优缺点

来源:baiyundou.net   日期:2024-09-21

华为云云耀云服务器L实例评测|在云耀云服务器L实例使用Docker搭建redis集群——三主三从集群

购买云耀云服务器 L 实例

华为云耀云服务器 L 实例是一款轻量级云服务器,开通选择实例即可立刻使用,不需要用户再对服务器进行基础配置。新用户还有专享优惠,2 核心 2G 内存 3M 带宽的服务器只要 89 元/年,可以点击华为云云耀云服务器 L 实例购买地址去购买云服务器。

购买指导可以查看上一篇文章华为云云耀云服务器 L 实例评测 |云服务器选购

云耀云服务器 L 实例安装 docker

这一部分在上一篇文章中已经详细说明,详见华为云云耀云服务器 L 实例评测|在云耀云服务器 L 实例上安装 Docker,本文不再赘述。

测试 Docker 是否正常运行

# 查看docker版本

docker version

# 测试运行容器

docker run hello-world

看到输出 docker 版本则表示 docker 已经成功安装,此时我们可以继续运行 hello world 的容器,测试容器是否可以正常运行。

如果 Docker 正常运行,就可以看到 docker 在成功创建容器并运行容器后,输出 hello from Docker!

创建 redis 的 docker 网段

这里将 redis 集群的网段设置为 172.16.0.0/24。

docker network create --driver bridge --subnet 172.16.0.0/24 --gateway 172.16.0.1 redis-net

查看刚刚创建的 redis 网段

docker network ls

创建 redis 的配置文件

先创建 shell 脚本来生成 redis 配置文件

sudo vim redis-node-config.sh

在 redis-node-config.sh 文件中输入以下内容:

#!/bin/bash

# 配置文件存放路径

BASE_PATH=/test/redis

# 创建个数

REDIS_COUNT=6

# ip前缀

REDIS_IP=172.16.0.1

for port in $(seq 1 $REDIS_COUNT);

do

mkdir -p $BASE_PATH/node-$port/conf

mkdir -p $BASE_PATH/node-$port/data

touch $BASE_PATH/node-$port/conf/redis.conf

cat < $BASE_PATH/node-$port/conf/redis.conf

port 6379

# 生产环境中为了安全性请绑定当前机器的ip

bind 0.0.0.0

# 启动集群模式

cluster-enabled yes

cluster-config-file nodes.conf

# redis节点宕机被发现的时间

cluster-node-timeout 5000

cluster-announce-ip $REDIS_IP$port

cluster-announce-port 6379

cluster-announce-bus-port 16379

appendonly yes

EOF

done

赋予脚本可执行权限

sudo chmod +x redis-node-config.sh

运行脚本创建配置文件

./redis-node-config.sh

查看脚本是否成功生成文件

cd /test/redis

ll

脚本启动 redis 容器

创建启动脚本

sudo vim redis-run.sh

在 redis-run.sh 中输入以下内容:

#!/bin/bash

# 配置文件存放路径

BASE_PATH=/test/redis

# 创建个数

REDIS_COUNT=6

# ip前缀

REDIS_IP=172.16.0.1

for port in $(seq 1 $REDIS_COUNT);

do

docker run -d -p 637$port:6379 -p 1667$port:16379 \\

--name redis-$port \\

-v $BASE_PATH/node-$port/data:/data \\

-v $BASE_PATH/node-$port/conf/redis.conf:/etc/redis/redis.conf \\

--net redis-net \\

--ip $REDIS_IP$port \\

redis redis-server /etc/redis/redis.conf

done

赋予脚本可执行权限

sudo chmod +x redis-run.sh

运行脚本启动多个 redis 容器

./redis-run.sh

脚本会创建六个 redis 容器并将它们启动起来。

开始搭建 redis 集群

# 进入其中一个容器

docker exec -it redis-1 /bin/bash

# 说明:--cluster :使用cluster的方式搭建集群 --cluster-replicas 1 :一个主机有一个从机

redis-cli --cluster create 172.16.0.11:6379 172.16.0.12:6379 172.16.0.13:6379 172.16.0.14:6379 172.16.0.15:6379 172.16.0.16:6379 --cluster-replicas 1

执行过程中需要输入一次 yes

测试 redis 集群

# 进入redis-1容器

docker exec -it redis-1 /bin/bash

# -c:以集群方式启动

redis-cli -c

# 设置一个键值对

set name berbai01

这里显示是 172.16.0.12 上的 redis 处理了 set 操作。

查看集群节点

cluster nodes

到此已经成功搭建了 redis 的 3 主 3 从集群,上图中 master 为主 redis,slave 则是从 redis。-----已授权转载

","gnid":"9d8337d18a0ab405b","img_data":[{"flag":2,"img":[{"desc":"","height":"529","title":"","url":"https://p0.ssl.img.360kuai.com/t01d0d243467d03dee4.jpg","width":"1283"},{"desc":"","height":"564","title":"","url":"https://p0.ssl.img.360kuai.com/t0171e943abd7d0571e.jpg","width":"468"},{"desc":"","height":"558","title":"","url":"https://p0.ssl.img.360kuai.com/t01c424501fd2940eb7.jpg","width":"533"},{"desc":"","height":"112","title":"","url":"https://p0.ssl.img.360kuai.com/t018fe7e95df3358a2e.jpg","width":"1283"},{"desc":"","height":"282","title":"","url":"https://p0.ssl.img.360kuai.com/t01df0b31317d250dce.jpg","width":"1002"},{"desc":"","height":"394","title":"","url":"https://p0.ssl.img.360kuai.com/t013eeb453308713b8e.jpg","width":"748"},{"desc":"","height":696,"title":"","url":"https://p0.ssl.img.360kuai.com/t014e96258992d33dcb.jpg","width":1172},{"desc":"","height":858,"title":"","url":"https://p0.ssl.img.360kuai.com/t01e0e74f2a31c8e0f8.jpg","width":1280},{"desc":"","height":"272","title":"","url":"https://p0.ssl.img.360kuai.com/t014a1024a79d73c4f4.jpg","width":"908"},{"desc":"","height":"206","title":"","url":"https://p0.ssl.img.360kuai.com/t013870d4441bd2f349.jpg","width":"1283"}]}],"original":0,"pat":"art_src_0,fts0,sts0","powerby":"cache","pub_time":1699873441000,"pure":"","rawurl":"http://zm.news.so.com/bafbf4c84e13aa1f3ea5e2ebd475a541","redirect":0,"rptid":"92df448fe235fe02","rss_ext":[],"s":"t","src":"杨老师技术评论","tag":[],"title":"在云耀云服务器L实例使用Docker搭建redis集群——三主三从集群

堵甘店3498java web开发缓存方案,ehcache和redis哪个更好 -
房韩邰18729432561 ______ java web开发缓存方案,ehcache和redis各有优劣势,对比如下:1、适合使用ehcache的场景:选用Ehcache作为数据存储服务器,Ehcache也是基于内存存储,支持定时持久化功能,非常适合存储像计数器这种小数据类型.处理Http请求使用...

堵甘店3498redis集群与单机版效率哪个更高 -
房韩邰18729432561 ______ 在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色.说了这么多,结论是,无论你使用哪一个,每秒处理请求的次数都不会成为瓶颈.

堵甘店3498redis集群和分布式概念的区别 -
房韩邰18729432561 ______ Redis有一系列的命令,特点是以NX结尾,NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists.这系列的命令非常有用,这里讲使用SETNX来实现分布式锁. 用SETNX实现分布式锁 利用SETNX非常简单地实现分布式锁.例如:某客户端要

堵甘店3498为什么要搭建redis集群 -
房韩邰18729432561 ______ Hadoop集群应用于大数据分析优势和挑战

堵甘店3498redis 有了集群还需要主从哨兵吗 -
房韩邰18729432561 ______ 即使使用哨兵,redis每个实例也是全量存储,每个redis存储的内容都是完整的数据,浪费内存且有木桶效应.为了最大化利用内存,可以采用集群,就是分布式存储.即每台redis存储不同的内容,共有16384个slot.每个redis分得一些slot,hash_slot = crc16(key) mod 16384 找到对应slot,键是可用键,如果有{}则取{}内的作为可用键,否则整个键是可用键 集群至少需要3主3从,且每个实例使用不同的配置文件,主从不用配置,集群会自己选.所以还是需要的,因为redis的集群是把内容存储到各个节点上,而哨兵的作用就是监控redis主、从数据库是否正常运行,主出现故障自动将从数据库转换为主数据库.

堵甘店3498[话题讨论]如何用好Redis -
房韩邰18729432561 ______ 发了半个小时居然没有人回复么.如何用好redis.我对redis的使用也只是刚接触,提不出什么好的见解,但是一直有一些困惑.提三个问题,看看能不能引出高人的思路,楼主不介意吧.目前大型集群基本都使用了proxy方案,比较出名的就是...

堵甘店3498怎么减少Redis内存占用 -
房韩邰18729432561 ______ 有两个思路:1. 手动写脚本把旧的redis中的数据刷到新的redis集群中.而在同步的过程中,产生的新的变化数据你需要再刷一遍(补刷).优点是切换的时候无压力变化,缺点是容易造成数据错误.2. 不去管它,直接让它切换到集群,原有redis数据全都作废,让它重新生成.优点是不容易出错,缺点是会有一定时间压力压到库上.具体怎么选择取决于业务逻辑和你原有程序的写法.

堵甘店3498redis集群的bind怎么配置 -
房韩邰18729432561 ______ Redis是足够高效的. 和Memecached对比,在数据量较小大情况下,Redis性能更优秀. 数据量大到一定程度的时候,Memecached性能稍好.

堵甘店3498Redis 可以用来做数据库吗 -
房韩邰18729432561 ______ 1、用来存放诸如用户注册信息、产品信息等可以估算出体量的数据还是很好的 比如一个用户注册信息1k,一亿用户信息也才需要100G内存 2、数据结构足够使用 3、搜索当然不要用redis,可以用ES来实现,搜出id后直接在redis里命中对应的数据. 4、redis最大的问题是事务的支持不好,但可以解决 5、读性能与硬盘数据库比,高出的不只一个数量级,尤其数据越多随机读的优势越明显. 并且互联网应用一般都是读多写少

堵甘店3498redis 怎么计算数据占用内存 -
房韩邰18729432561 ______ Redis常用数据类型 Redis最为常用的数据类型主要有以下五种: String Hash List Set Sorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的: 首先Redis内部使用一个redisObject对.

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024