搭建redis服务器的记录.part1

背景

因为迁移上云的原因,所以需要把老虚拟机关掉,发现有一个老虚拟机上就一个redis什么都没有。
故决定搭建一个公用的redis

搭建公用redis的思路

  • 多租户
  • 集群稳定
  • 配置够顶

创建命令

1
docker run --name redis-main -d -p 6379:6379   -v /root/redis-data:/data   -v /root/redis-conf/redis.acl:/usr/local/etc/redis/redis.acl   redis:7.4.1 redis-server   --aclfile /usr/local/etc/redis/redis.acl   --appendonly yes   --appendfsync everysec   --save "60 1000"   --bind 0.0.0.0```

每个部分的详细解释:

  • -p 6379:6379:这将容器内部的6379端口映射到宿主机的6379端口,使得外部可以通过宿主机的6379端口访问到容器中的Redis服务。
  • -v /root/redis-data:/data:这将宿主机的/root/redis-data目录挂载到容器的/data目录,通常用于持久化存储Redis的数据。
  • -v /root/redis-conf/redis.acl:/usr/local/etc/redis/redis.acl:这将宿主机的/root/redis-conf/redis.acl文件挂载到容器的/usr/local/etc/redis/redis.acl路径,用于配置Redis的ACL(访问控制列表)。
  • redis:7.4.1:指定要使用的Redis镜像的名称和版本,这里是redis镜像的7.4.1版本。
  • redis-server:这是在容器内启动Redis服务的命令。
  • --aclfile /usr/local/etc/redis/redis.acl:指定Redis的ACL配置文件路径。
  • --appendonly yes:启用Redis的AOF(Append Only File)持久化模式,即所有的写操作都会被记录到AOF文件中。
  • --appendfsync everysec:设置AOF持久化的同步策略为每秒同步一次到磁盘。
  • --save "60 1000":设置RDB(Redis Database)持久化的触发条件,即在60秒内至少有1000个键被修改时,自动触发RDB持久化。
  • --bind 0.0.0.0:将Redis服务绑定到所有网络接口,使得容器内的Redis服务可以从任何IP地址访问。

redis.acl格式

1
2
3
user default on >passwordforuser ~* +@all
user user1 on >password123 ~user1:* +@all -@admin
user user2 on >password345 ~user2:* +@all -@admin

以上命令创建了默认用户和user1,user2两个租户。其中默认用户拥有全部的权限,主要包含了@admin系列权限。
@admin权限包含了redis-cli里运行的acl命令系列,可以更改其他人权限。
需要注意的点是租户一定不能赋予@admin权限。

redis实例的查看工具

我是用redis insight,就官方提供的gui界面。里面连上对应的实例之后,左下角有cli窗口,可以进行各种测试。

redis多租户的效果

使用key的时候需要加入账户名同名前缀
用管理员账号查看大概就是下面的效果
img.png

增加一个新的租户的操作

  • 编辑redis.acl文件,增加一行,指定用户名和password
  • docker restart redis-main

后续要做的工作

  • 集群化等后续再说
  • 等需要做集群了再申请多的机器