你了解 Redis 的三种集群模式吗?

最近在面试过程中被面试官问到 Redis 集群数据是如何复制的,由于之前没有准备直接懵了。
事后查了查这个问题其实也挺简单,如果你之前也不知道,没问题,赶紧浅尝辄止,速度3遍即可入门。

阅读本文,你可能会有哪些收获呢?

  • 首先,你会知道有三种集群模式
  • 然后对每种集群模式的原理有个大概了解
  • 当然还能看到集群演变的影子
  • 最后还会有手把手的实操

Redis 支持三种集群方案

  • 主从复制模式
  • Sentinel(哨兵)模式
  • Cluster 模式
分类至 杂项
0条评论

Redis 集群添加节点和删除节点

上一篇我们讲述了《Docker 快速搭建 Redis 集群》,本篇我们将继续讲述 Redis 集群添加节点和删除节点。

之前搭建集群的时候,已经创建了6个 Redis 实例,在原基础上再加2个实例,配置文件 docker-compose.yml 如下...

分类至 杂项
0条评论

Docker 快速搭建 Redis 集群

本篇,将介绍通过 docker-compose 编排的方式快速搭建 Redis 集群。

计划安排:

  • 构建6个容器,名称分别为 redis1 ~ redis6
  • 内网 IP 分配 172.10.1.1 ~ 172.10.1.6
  • 所有实例的 redis.conf 配置文件相同
  • 将6个实例连接为集群
  • 演示集群中故障自动检测与自动恢复
分类至 Docker
0条评论

Docker 私有仓库界面化管理

前一篇我们介绍了《Docker 私有仓库搭建》,但是搭建完的私有仓库没有 UI 管理界面,操作很不方便。我们可以借助第三方 registry-web 镜像来实现界面化管理,目前比较流行的镜像包是 hyper/docker-registry-web。

通过两条 docker run 指令快速搭建:

docker run -d -p 5000:5000 --name registry-srv registry:2
docker run -it -p 8080:8080 --name registry-web --link registry-srv -e REGISTRY_URL=http://registry-srv:5000/v2 -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web 

我们将私有仓库的容器命名为 registry-srv,将 WebUI 管理容器命名为 registry-web,第2条指令的 --link 参数让 registry-srv 和 registry-web 做连接,这样我们在 registry-web 内部就可以通过 registry-srv:5000 地址来访问私有仓库了。

分类至 Docker
0条评论

Docker 私有仓库搭建

在 Docker 中,当我们执行 docker pull xxx 的时候 ,它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库。在工作中,我们不可能把企业项目push到公有仓库进行管理。所以为了更好的管理镜像,Docker 不仅提供了一个中央仓库,同时也允许我们搭建本地私有仓库。

Docker 官方提供了一个搭建私有仓库的镜像 registry ,只需把镜像下载下来,运行容器并暴露5000端口,就可以使用了。

分类至 Docker
0条评论

Let's Encrypt 通配符证书续期失败:must be provided with --manual-auth-hook

前几个月发表了一篇文章《申请免费的 Let's Encrypt 通配符 SSL/TLS 证书》,如今2个多月过去,今天收到了来自 Let's Encrypt 的邮件,提醒我证书该续期了。

原本以为只需要执行 certbot-auto renew 就可以愉快的完成续期,但执行报错了,输出结果如下:

The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',). Skipping.
All renewal attempts failed. The following certs could not be renewed:
  /etc/letsencrypt/live/yangdx.com/fullchain.pem (failure)

重点这句:An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.

原来,通配符域名证书不能简单的通过执行 certbot-auto renew 来完成续期,必须通过 --manual-auth-hook 参数提供一个身份验证脚本来自动完成 DNS TXT 记录的验证操作。

分类至 杂项
0条评论

php 中 http_build_query 函数对空值的处理

在对接 API 接口的时候,我们常常使用 http_build_query 函数来拼接参数。但是,这个函数会对空值做过滤和转换,不小心的话,很容易踩坑。

下面演示执行:

$args = [
    'key1' => 0,
    'key2' => '',
    'key3' => '0',
    'key4' => [],
    'key5' => null,
    'key6' => false,
    'key7' => true
];
$str = http_build_query($args);
echo $str;

输出结果为...

分类至 PHP
0条评论

docker 容器内的 laravel 项目访问变慢

因为重装 win10 系统,把 Docker 也重装了一遍,安装的时候提示系统支持 WSL 2,说是比 Hyper-V 启动更快,推荐使用。居然有好处,那就勾上这个选项吧。

启用 WSL 2 后,Docker 启动确实快了很多。

但是,今天发现,容器内的 Laravel 项目变慢了!

重装系统前,Laravel 项目 API 接口访问慢的时候也就几百毫秒,而现在却要 1.7 秒左右。追踪排查,我这个接口里用到的 SQL 也不复杂啊,就是一个简单的 Select 语句,放到 phpMyAdmin 里面执行也很快,确认不是 SQL 的问题...

分类至 Docker
0条评论

git file mode change

提交代码到仓库时,发现明明没有改动的文件提示有修改,并且是很多的文件都提示有修改。

但是修改的添加行和删除行都是 0。

于是 diff 一下:

$ git diff code.c
old mode 100755
new mode 100644

 

原来是文件模式发生了变化。

想了下,可能是别人从 Mac 上提交,我在 Win 上 pull 代码,导致文件模式发生了变化。

分类至 杂项
0条评论

Excel 中真假重复的一个简单处理

Excel是我们常见的办公软件Office的三驾马车之一,另外两架自然是Word与PowerPoint了。日常办公中,基本上都离不开这3个软件的支持了。方便了工作,也方便了生活,但今天小A遇到了一个小小的问题,就是EXCEL中可能存在的真假重复项的问题。毕竟大家使用Excel的时候经常会使用条件格式中突出显示单元格规则的重复值,来让重复的项目突显出来,避免重复或者进行计数。这个问题是Excel本身设计上的一个问题,但也是比较容易解决的。

分类至 杂项
0条评论