前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker 安装 Redis 并外置数据文件

Docker 安装 Redis 并外置数据文件

作者头像
鳄鱼儿
发布2024-05-21 13:48:54
1730
发布2024-05-21 13:48:54
举报

前言

Redis是一个开源的内存型数据库,也被称为数据结构服务器nosql。它是一种高性能、非关系型数据库,通常用于缓存和快速存储键值对数据,也可以支持多种复杂的数据结构。

Redis 在许多应用场景中都有应用,比如缓存、会话存储、消息队列、计数器、排行榜、实时分析和发布/订阅系统等。

centos 安装redis的过程

查看可用的 Redis 版本

可以在redis镜像地址: https://hub.docker.com/_/redis?tab=tags,可以这里查找到所有可用的redis版本。

同时通过docker搜索指令,可以输出redis可用版本,供之后docker拉取镜像选择版本。

代码语言:javascript
复制
    docker search redis

拉取 Redis 镜像

这里拉取的是最新的redis镜像,用latest标识。也可以根据上面输出的redis版本进行指定版本的redis镜像拉取。

代码语言:javascript
复制
    docker pull redis:latest

查看本地所有镜像

当redis镜像下载完成后,我们可以通过images命令查看本地所有的docker镜像。

代码语言:javascript
复制
    docker images

运行容器

通过run命令运行docker容器,这里可以使用上面下载好的redis镜像,也可以指定本地未下载的redis镜像版本,此时docker会先执行pull命令,下载完redis镜像后才执行run命令。

代码语言:javascript
复制
    docker run -itd --name redis-test -p 6379:6379 redis

参数说明:

-p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务。

查看运行情况

代码语言:javascript
复制
    docker ps

进入容器内部,还可以通过 redis-cli 连接测试使用 redis 服务。

代码语言:javascript
复制
    docker exec -it redis-test /bin/bash
    redis-cli

到此docker安装redis已经完成啦。

将配置文件和数据文件映射到外部

创建存放redis数据的文件夹

代码语言:javascript
复制
    mkdir -p ~/i/apps/redis/{conf,data}

下载配置文件

下载redis配置文件,这里是redis的默认配置,后续可以针对配置进行特定修改

代码语言:javascript
复制
    cd ~/i/apps/redis/conf
    wget https://raw.githubusercontent.com/antirez/redis/5.0/redis.conf

修改配置文件

bind 127.0.0.1只能通过本地连接redis,这里需要远程访问redis,将其注释。

requirepass 表示登陆redis的密码,不填写则表示没有密码,填写密码可以增加redis访问的安全性。

protected-mode 设置为 yes 表示启用 Redis 的保护模式,可以限制了远程客户端的访问,以减少潜在的安全风险。前面我们将bind 127.0.0.1注释,所以这里需要改为no,表示不限制远程连接。

代码语言:javascript
复制
    # 注释符号 #
    # 1. 注释 bind 127.0.0.1
    # 2. protected-mode yes 修改成 protected-mode no
    # 3. 添加 requirepass yourpassword (注:不添加则可以无密码访问)

    # 注:步骤1和步骤的2目的是为了远程连接redis,如果只需本地访问就无需修改。

    #  bind 127.0.0.1
    protected-mode no

创建并启动容器

docker run运行一个redis的容器,这里的几个参数意义表示如下:

-d 表示容器在后台运行,这样可以使容器在后台持续运行而不占用终端,终端关闭程序仍可以正常运行。

-p 6379:6379 将主机(宿主机)端口 6379 映射到容器内部的端口 6379,可以通过主机上的端口访问运行在容器内部的 Redis 服务器。

-v ~/i/apps/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf: 将主机上的 Redis 配置文件 ~/i/apps/redis/conf/redis.conf 映射到容器内部的 /usr/local/etc/redis/redis.conf,可以将自定义的 Redis 配置文件加载到容器中,再重启容器实现redis配置的更新。该参数后data映射是将主机上的数据目录 ~/i/apps/redis/data 映射到容器内部的 /data 目录。这样可以将 Redis 数据持久化到主机文件系统,即数据在容器销毁后仍可以保留。

redis-server /usr/local/etc/redis/redis.conf: 这是在容器运行后,在容器内执行的命令,即 Redis服务器在容器内使用指定的配置文件 /usr/local/etc/redis/redis.conf 启动。

代码语言:javascript
复制
    docker run -d  -p 6379:6379 -v ~/i/apps/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf -v ~/i/apps/redis/data:/data --name myredis redis redis-server /usr/local/etc/redis/redis.conf

脚本启动

为了方便启动redis,这里我写了一个启动脚本,该脚本仅映射了数据文件的redis容器使用,会先删除容器再创建容器。

如有其他需求可以自行修改脚本指令。

代码语言:javascript
复制
cd ~/i/apps/redis/
cat <<EOF > start.sh

#!/bin/bash
REDIS_DIR=`pwd`
docker stop myredis
docker rm myredis
docker run -d  --restart always  --name myredis  -p 6379:6379 -v \${REDIS_DIR}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v \${REDIS_DIR}/data:/data  redis redis-server /usr/local/etc/redis/redis.conf  -appendonly yes
EOF

测试启动脚本

启动脚本,或赋予执行权限后,通过./start.sh启动。

代码语言:javascript
复制
    sh start.sh

测试redis功能

进入redis容器内部执行redis-cli,此时就可以执行rdis命令了。

代码语言:javascript
复制
     docker exec -it myredis /bin/bash
     redis-cli
     set testkey 2
     get testkey

到此已经完成整个redis容器的部署,感谢阅读。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • centos 安装redis的过程
    • 查看可用的 Redis 版本
      • 拉取 Redis 镜像
        • 查看本地所有镜像
          • 运行容器
            • 查看运行情况
            • 将配置文件和数据文件映射到外部
              • 创建存放redis数据的文件夹
                • 下载配置文件
                  • 修改配置文件
                    • 创建并启动容器
                      • 脚本启动
                        • 测试启动脚本
                          • 测试redis功能
                          相关产品与服务
                          容器服务
                          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档