ports:
‘8002:8002’
‘18002:18002’
redis3:
image: publicisworldwide/redis-cluster
restart: always
volumes:
environment:
ports:
‘8003:8003’
‘18003:18003’
redis4:
image: publicisworldwide/redis-cluster
restart: always
volumes:
environment:
ports:
‘8004:8004’
‘18004:18004’
redis5:
image: publicisworldwide/redis-cluster
restart: always
volumes:
environment:
ports:
‘8005:8005’
‘18005:18005’
redis6:
image: publicisworldwide/redis-cluster
restart: always
volumes:
environment:
ports:
‘8006:8006’
‘18006:18006’
创建文件后,直接启动服务
窗口模式
docker-compose up
后台进程
docker-compose up -d
查看启动的进程
[root@localhost redis-cluster]# docker-compose ps
Name Command State Ports
rediscluster_redis1_1 /usr/local/bin/entrypoint. … Up
rediscluster_redis2_1 /usr/local/bin/entrypoint. … Up
rediscluster_redis3_1 /usr/local/bin/entrypoint. … Up
rediscluster_redis4_1 /usr/local/bin/entrypoint. … Up
rediscluster_redis5_1 /usr/local/bin/entrypoint. … Up
rediscluster_redis6_1 /usr/local/bin/entrypoint. … Up
状态为Up,说明服务均已启动,镜像无问题。
注意:以上镜像不能设置永久密码,其实redis一般是内网访问,可以不需密码。
上面只是启动了6个redis容器,并没有设置集群,通过下面的命令可以设置集群。
docker run --rm -it inem0o/redis-trib create --replicas 1 172.19.165.222:8001 172.19.165.222:8002 172.19.165.222:8003 172.19.165.222:8004 172.19.165.222:8005 172.19.165.222:8006
这里同样使用了另一个镜像inem0o/redis-trib
,执行时会自动下载。
日志如下
[root@localhost disconf]# docker run --rm -it inem0o/redis-trib create --replicas 1 172.19.165.222:8001 172.19.165.222:8002 172.19.165.222:8003 172.19.165.222:8004 172.19.165.222:8005 172.19.165.222:8006
Unable to find image ‘inem0o/redis-trib:latest’ locally
latest: Pulling from inem0o/redis-trib
a2b2998a36ab: Pull complete
a3ed95caeb02: Pull complete
46ab6b64c08e: Pull complete
3d82c3ac2025: Pull complete
Digest: sha256:0b89d25b387f70ef1c54605bdf061dd86e0833dbc0e2149390570b8b372278f8
Status: Downloaded newer image for inem0o/redis-trib:latest
Creating cluster
Performing hash slots allocation on 6 nodes…
Using 3 masters:
172.19.165.222:8001
172.19.165.222:8002
172.19.165.222:8003
Adding replica 172.19.165.222:8004 to 172.19.165.222:8001
Adding replica 172.19.165.222:8005 to 172.19.165.222:8002
Adding replica 172.19.165.222:8006 to 172.19.165.222:8003
M: 67d9a6bb6875f3a0f9a53e5bb05ddeca8e656950 172.19.165.222:8001
slots:0-5460 (5461 slots) master
M: 206626063f31dcd7e69010ce13c258e786197f1e 172.19.165.222:8002
slots:5461-10922 (5462 slots) master
M: e9924018d95772b8ff535f6bc0605a6630837069 172.19.165.222:8003
slots:10923-16383 (5461 slots) master
S: 548f4e65fbab8dcde8aac187849d50983d68599d 172.19.165.222:8004
replicates 67d9a6bb6875f3a0f9a53e5bb05ddeca8e656950
S: 0a5c799c1f8fed083c50902639fc354e4c25aa8c 172.19.165.222:8005
replicates 206626063f31dcd7e69010ce13c258e786197f1e
S: 94e2530ddd05b0e9eb3e71a9616342bd6647a5e6 172.19.165.222:8006
replicates e9924018d95772b8ff535f6bc0605a6630837069
Can I set the above configuration? (type ‘yes’ to accept): yes
Nodes configuration updated
Assign a different config epoch to each node
Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join…
Performing Cluster Check (using node 172.19.165.222:8001)
M: 67d9a6bb6875f3a0f9a53e5bb05ddeca8e656950 172.19.165.222:8001
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: 94e2530ddd05b0e9eb3e71a9616342bd6647a5e6 172.19.165.222:8006@18006
slots: (0 slots) slave
replicates e9924018d95772b8ff535f6bc0605a6630837069
S: 0a5c799c1f8fed083c50902639fc354e4c25aa8c 172.19.165.222:8005@18005
slots: (0 slots) slave
replicates 206626063f31dcd7e69010ce13c258e786197f1e
M: e9924018d95772b8ff535f6bc0605a6630837069 172.19.165.222:8003@18003
slots:10923-16383 (5461 slots) master
1 additional replica(s)
M: 206626063f31dcd7e69010ce13c258e786197f1e 172.19.165.222:8002@18002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: 548f4e65fbab8dcde8aac187849d50983d68599d 172.19.165.222:8004@18004
slots: (0 slots) slave
replicates 67d9a6bb6875f3a0f9a53e5bb05ddeca8e656950
[OK] All nodes agree about slots configuration.
Check for open slots…
Check slots coverage…
[OK] All 16384 slots covered.
可以看到设置了3个Master,3个Slave,若想测试下集群,可以参考【Redis-Cluster集群】
只需二步就完成了集群的部署,但上面是使用了别人的镜像,若是要自己创建镜像该如何呢?
手动创建镜像
编写Dockerfile
#基础镜像
FROM redis
#修复时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo ‘Asia/Shanghai’ >/etc/timezone
#环境变量
ENV REDIS_PORT 8000
#ENV REDIS_PORT_NODE 18000
#暴露变量
EXPOSE $REDIS_PORT
#EXPOSE $REDIS_PORT_NODE
#复制
COPY entrypoint.sh /usr/local/bin/
COPY redis.conf /usr/local/etc/
#for config rewrite
RUN chmod 777 /usr/local/etc/redis.conf
RUN chmod +x /usr/local/bin/entrypoint.sh
#入口
ENTRYPOINT [“/usr/local/bin/entrypoint.sh”]
#命令
CMD [“redis-server”, “/usr/local/etc/redis.conf”]
编写shell文件entrypoint.sh
#!/bin/sh
#只作用于当前进程,不作用于其创建的子进程
set -e
#$0–Shell本身的文件名 $1–第一个参数 $@–所有参数列表
--user
if [ “ 1 " = ′ r e d i s − s e r v e r ′ − a " 1" = 'redis-server' -a " 1"=′redis−server′−a"(id -u)” = ‘0’ ]; then
sed -i ‘s/REDIS_PORT/’$REDIS_PORT’/g’ /usr/local/etc/redis.conf
chown -R redis . #改变当前文件所有者
exec gosu redis “ 0 " " 0" " 0""@” #gosu是sudo轻量级”替代品”
fi
exec “$@”
编写redis.conf
#端口
port REDIS_PORT
#开启集群
cluster-enabled yes
#配置文件
cluster-config-file nodes.conf
cluster-node-timeout 5000
#更新操作后进行日志记录
appendonly yes
#设置主服务的连接密码
#设置从服务的连接密码
注意:
requirepass和masterauth不能启用,否则redis-trib创建集群失败。
protected-mode 保护模式是禁止公网访问,但是不能设置密码和bind ip。
以上编写了3个文件,其实可以创建镜像了,不过也可以在docker-compose中自动创建。
编写docker-compose.yml文件
version: ‘3’
services:
redis1:
build: ./
restart: always
volumes:
environment:
ports:
‘8001:8001’ #服务端口
‘18001:18001’ #集群端口
redis2:
build: ./
restart: always
volumes:
environment:
ports:
‘8002:8002’
‘18002:18002’
redis3:
build: ./
restart: always
volumes:
environment:
ports:
‘8003:8003’
‘18003:18003’
redis4:
build: ./
restart: always
volumes:
environment:
ports:
‘8004:8004’
‘18004:18004’
redis5:
build: ./
restart: always
volumes:
environment:
ports:
‘8005:8005’
‘18005:18005’
redis6:
build: ./
restart: always
volumes:
environment:
ports:
‘8006:8006’
‘18006:18006’
创建镜像
窗口模式
docker-compose up
后台进程
docker-compose up -d
重新创建
docker-compose up --build
若创建成功,可以使用命令登录并查看集群信息。
[root@localhost src]# ./redis-cli -c -p 8003
127.0.0.1:8003> cluster info
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:1
cluster_size:0
cluster_current_epoch:0
cluster_my_epoch:0
cluster_stats_messages_sent:0
cluster_stats_messages_received:0
从上面的日志里看到,当前集群状态失败。
与上面相同,重新执行上面的第二步,再次查看结果如下:
127.0.0.1:8003> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:3
cluster_stats_messages_ping_sent:39
cluster_stats_messages_pong_sent:37
cluster_stats_messages_meet_sent:4
cluster_stats_messages_sent:80
cluster_stats_messages_ping_received:34
cluster_stats_messages_pong_received:43
cluster_stats_messages_meet_received:3
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题
并发编程面试题汇总
JVM面试题汇总
Netty常被问到的那些面试题汇总
Tomcat面试题整理汇总
Mysql面试题汇总
Spring源码深度解析
Mybatis常见面试题汇总
Nginx那些面试题汇总
Zookeeper面试题汇总
RabbitMQ常见面试题汇总
JVM常频面试:
Mysql面试题汇总(一)
Mysql面试题汇总(二)
Redis常见面试题汇总(300+题)
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
mmunity.csdnimg.cn/images/e5c14a7895254671a72faed303032d36.jpg" alt=“img” style=“zoom: 33%;” />
为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题
并发编程面试题汇总
JVM面试题汇总
Netty常被问到的那些面试题汇总
Tomcat面试题整理汇总
Mysql面试题汇总
Spring源码深度解析
Mybatis常见面试题汇总
Nginx那些面试题汇总
Zookeeper面试题汇总
RabbitMQ常见面试题汇总
JVM常频面试:
[外链图片转存中…(img-qGcGN5BL-1713079654021)]
Mysql面试题汇总(一)
[外链图片转存中…(img-zGbbOODX-1713079654021)]
Mysql面试题汇总(二)
[外链图片转存中…(img-vf65D2eZ-1713079654021)]
Redis常见面试题汇总(300+题)
[外链图片转存中…(img-uq6Jh5Uj-1713079654021)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
文章浏览阅读313次。系统自带指纹驱动、声卡,网卡,显卡等所有驱动、三星出厂时主题壁纸、系统属性三星专属LOGO标志、Office办公软件等三星出厂时自带的预装程序。由于时间关系,绝大部分资料没有上传,不是想要的型号,请联系客服获取。_三星930qcg原壁纸
文章浏览阅读113次。LAMP(Linux + Apache + MySQL + PHP)是一种常用的Web服务器环境,用于在Linux操作系统上搭建和运行动态网站。本文将详细介绍如何在Linux系统中安装LAMP,并提供相应的源代码。综上所述,本文介绍了在Linux系统中安装LAMP及环境配置的详细步骤。MySQL是一个常用的关系型数据库管理系统,用于存储和管理Web应用程序的数据。如果一切顺利,你可以通过在Web浏览器中输入服务器的IP地址来访问Apache的默认欢迎页面。,如果一切正常,你将看到一个显示PHP信息的页面。_在linux环境下搭建lamp和lnmp要注意什么
文章浏览阅读51次。它通过刷子和导电环之间的接触传导和滑动接触,实现了电能和信号的传输功能。随着科技的进步,导电滑环的技术将不断完善和发展,为工业自动化和智能化提供更大的保障和支持。首先,在机械设备中,导电滑环常被用于旋转平台、回转支承和机械臂等设备中,以实现电流和信号的传输。导电滑环是一种机械设备,用于在旋转结构中实现电能和信号的传输。导电环位于滑环的一侧,与旋转部分相连,而刷子则与导电环接触,起到能源或信号的传递作用。这样,当电能或信号从旋转部分输入时,通过刷子和导电环的接触传导,实现了能源或信号的传输。
文章浏览阅读442次,点赞12次,收藏6次。1.背景介绍随着大数据、人工智能等领域的不断发展,机器学习和深度学习技术已经成为了各行各业的核心技术之一。在这些领域中,模型压缩和模型剪枝是两种重要的技术手段,它们可以帮助我们更有效地利用计算资源,提高模型的运行速度和部署效率。模型压缩主要通过降低模型的参数数量和计算复杂度来减小模型的体积,从而减少内存占用和计算开销。模型剪枝则通过去除模型中不重要的神经元或权重来减少模型的复杂度,从而减少...
文章浏览阅读660次。摘要:为了实现移动视频监控,提出了一种基于智能手机的远程视频监控系统。介绍了监控系统的体系结构和硬件平台,阐述了嵌入式操作系统Android 应用程序的开发方法,并结合实际的应用系统,重点论述了Android 平台上视频监控客户端的设计思路。移植了音视频解码库FFmpeg 进行H. 264 视频解码,并采用OpenGL ES 实现实时视频显示。在无线局域网络的环境下对视频监控终端进行测试,达到了利_android 远程视频监控
文章浏览阅读426次,点赞8次,收藏8次。S3存储桶接入点是Amazon S3的一项功能,它允许您在特定的AWS区域内创建一个虚拟的终端节点,用于直接访问S3存储桶而无需经过Internet。这样可以提高数据访问的安全性和性能,并且可以更好地控制对存储桶的访问。通过S3存储桶接入点,您可以将存储桶与VPC(Virtual Private Cloud)中的资源关联起来,从而实现在VPC内部直接访问S3存储桶。这样一来,您可以通过私有网络进行数据传输,而无需通过公共Internet,从而提高了数据传输的安全性和可靠性。此外,S3存储桶接入点还支持使
文章浏览阅读655次,点赞25次,收藏14次。在使用YonBuilder移动开发技术进行App项目开发时,我们需要使用YonStuido开发工具的WIFI同步功能进行项目代码的真机调试,友开发App与自定义Loader都支持WIFI同步功能,那么两款App软件到底有什么区别,在开发过程中我们该如何选择?本文针对上面的问题,对友开发App与自定义Loader进行一些简单的介绍和具体使用粒度上区别的介绍。_yonstudio 存储 申请权限
文章浏览阅读439次。市面上的java报表工具种类繁多,功能大同小异,非业内人士在java报表选型时倍感头疼,如何从润乾报表、Style Report,Jasper Report,birt报表,ireport,杰表等候选中找到合适的产品,本篇文章就带领大家逐一认识各类java报表工具,以及他们的重点强项。1、润乾报表--纯Java报表工具,B/S 架构,专注于中国式复杂报表的制作。提出了类Excel报表设计模型、非线性..._润乾报表 java开发
文章浏览阅读614次,点赞2次,收藏3次。rt-thread stdio使用DAP烧录失败_rtt studio dap
文章浏览阅读1.7k次。原文来源:arXiv、GitHub作者:Yunjey Choi、 Minje Choi、Munyoung Kim、Jung-Woo Ha、Sung Kim、Jaegul Choo「雷克世界」编译:嗯~阿童木呀、哆啦A亮最近的研究表明,两个域之间的图像到图像转换取得了显著的成功。不过,现有的方法在处理两个以上的域时在可扩展性和鲁棒性方面存在局限性,因为应该为每一对图像_munyoung
文章浏览阅读1.2k次。ClosedXML是一个.NET第三方开源库,支持读取、操作和写入Excel 2007+ (.xlsx, .xlsm)文件,是基于OpenXML封装的,让开发人员无需了解OpenXML API底层API,便于运用于项目开发。_.net excel 开源
文章浏览阅读719次。1、MyBatis 通过包含的jdbcType类型BIT、FLOAT、CHAR 、TIMESTAMP 、 OTHER 、UNDEFINEDTINYINT 、REAL 、VARCHAR 、BINARY 、BLOB NVARCHAR、SMALLINT 、DOUBLE 、LONGVARCHAR 、VARBINARY 、CLOB、NCHAR、INTEGER、 NUMERIC、DATE 、LONGVARBI..._mybatis clob对应的java类型