通過docker和docker-compose安裝redis兩種方式詳解
Redis 是一個(gè)開源的使用 ANSI C 語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value 的 NoSQL 數(shù)據(jù)庫,并提供多種語言的 API。這里介紹通過docker和docker-compose兩種安裝redis的方式。
一、docker安裝方式
1、查看可用的 Redis 版本
訪問 Redis 鏡像庫地址:https://hub.docker.com/_/redis?tab=tags。
可以通過 Sort by 查看其他版本的 Redis,默認(rèn)是最新版本 redis:latest。
也可以在下拉列表中找到其他版本:
此外,我們還可以用 docker search redis 命令來查看可用版本:
$ docker search redis NAME DESCRIPTION STARS OFFICIAL AUTOMATED redis Redis is an open source ... 2321 [OK] sameersbn/redis 32 [OK] torusware/speedus-redis Always updated official ... 29 [OK] bitnami/redis Bitnami Redis Docker Image 22 [OK] anapsix/redis 11MB Redis server image ... 6 [OK] webhippie/redis Docker images for redis 4 [OK] clue/redis-benchmark A minimal docker image t... 3 [OK] williamyeh/redis Redis image for Docker 3 [OK] unblibraries/redis Leverages phusion/baseim... 2 [OK] greytip/redis redis 3.0.3 1 [OK] servivum/redis Redis Docker Image 1 [OK] ...
2、取最新版的 Redis 鏡像
這里我們拉取官方的最新版本的鏡像:
$ docker pull redis:latest
3、查看本地鏡像
使用以下命令來查看是否已安裝了 redis:
$ docker images
在上圖中可以看到我們已經(jīng)安裝了最新版本(latest)的 redis 鏡像。
4、運(yùn)行容器
安裝完成后,我們可以使用以下命令來運(yùn)行 redis 容器:
$ docker run -itd --name redis-test -p 6379:6379 redis
參數(shù)說明:
-p 6379:6379:映射容器服務(wù)的 6379 端口到宿主機(jī)的 6379 端口。外部可以直接通過宿主機(jī)ip:6379 訪問到 Redis 的服務(wù)。
5、安裝成功
最后我們可以通過 docker ps 命令查看容器的運(yùn)行信息:
接著我們通過 redis-cli 連接測(cè)試使用 redis 服務(wù)。
$ docker exec -it redis-test /bin/bash
二、 使用docker-compose安裝redis的方法
1.目錄結(jié)構(gòu)
docker-compose和redis相關(guān)的目錄和文件存儲(chǔ)結(jié)構(gòu)如下:
myProject ----項(xiàng)目名 ├── compose │ └── docker-compose.yml ----compose配置文件 └── redis ├── data ----redis數(shù)據(jù)存儲(chǔ)目錄 ├── logs ----redis日志文件目錄(redis.conf中l(wèi)ogfile設(shè)置相對(duì)路徑則不需要) └── redis.conf ----redis配置文件
2.redis.conf配置文件內(nèi)容
使用官方的redis.conf配置文件沒搞定(可能是redis版本有差異,個(gè)別參數(shù)不匹配),這里我們直接將主要參數(shù)提取出來。
#開啟遠(yuǎn)程可連接 #bind 127.0.0.1 #自定義密碼 requirepass 12345678 #指定 Redis 監(jiān)聽端口(默認(rèn):6379) port 6379 #客戶端閑置指定時(shí)長后關(guān)閉連接(單位:秒。0:關(guān)閉該功能) timeout 0 # 900s內(nèi)如果至少一次寫操作則執(zhí)行bgsave進(jìn)行RDB持久化操作 save 900 1 # 在300s內(nèi),如果至少有10個(gè)key進(jìn)行了修改,則進(jìn)行持久化操作 save 300 10 #在60s內(nèi),如果至少有10000個(gè)key進(jìn)行了修改,則進(jìn)行持久化操作 save 60 10000 #是否壓縮數(shù)據(jù)存儲(chǔ)(默認(rèn):yes。Redis采用LZ 壓縮,如果為了節(jié)省 CPU 時(shí)間,可以關(guān)閉該選項(xiàng),但會(huì)導(dǎo)致數(shù)據(jù)庫文件變的巨大) rdbcompression yes #指定本地?cái)?shù)據(jù)文件名(默認(rèn):dump.rdb) dbfilename dump.rdb #指定本地?cái)?shù)據(jù)文件存放目錄 dir /data #指定日志文件位置(如果是相對(duì)路徑,redis會(huì)將日志存放到指定的dir目錄下) logfile "redis.log"
3.docker-compose.yml配置文件內(nèi)容
version: "3.8" services: redis: # 鏡像及版本 image: redis:6.2.6 # 自定義容器名 container_name: my-redis # docker啟動(dòng)時(shí),自動(dòng)啟動(dòng)該容器 restart: always # 掛載映射,可以讓數(shù)據(jù)或配置持久化 volumes: # <本地配置文件> : <docker中的配置文件> : <ro:docker容器對(duì)該文件只讀,默認(rèn)是rw可讀可寫> - ../redis/redis.conf:/etc/redis/redis.conf:ro # <本地?cái)?shù)據(jù)目錄> : <docker中的數(shù)據(jù)目錄> - ../redis/data:/data # <本地日志目錄> : <docker中的日志目錄> # redis不具有自動(dòng)創(chuàng)建/logs的權(quán)限,如果redis.conf中指定的相對(duì)位置,則數(shù)據(jù)目錄已經(jīng)可以映射出日志文件 #- ../redis/logs:/logs # docker執(zhí)行的啟動(dòng)命令 command: redis-server /etc/redis/redis.conf ports: # <本地端口> : <docker容器端口> - 6378:6379
4. docker-compose啟動(dòng)和關(guān)閉
# cd compose # docker-compose up // 或以后臺(tái)方式啟動(dòng) # docker-compose up -d // 關(guān)閉docker-compose # docker-compose down
5. 檢查redis啟動(dòng)情況
直接使用客戶端RDM連接redis;也可以先通過命令檢查一下:
// 查看容器 # docker ps // 查看端口 # netstat -ntlp
6.查看redis容器的CPU和內(nèi)存使用狀態(tài)
# docker stats my-redis CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 0631151ef5d8 my-redis 0.05% 1.766MiB / 3.7GiB 0.05% 13kB / 55.1kB 0B / 8.19kB 6
總結(jié)
到此這篇關(guān)于通過docker和docker-compose安裝redis兩種方式的文章就介紹到這了,更多相關(guān)docker和docker-compose安裝redis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
為什么RedisCluster設(shè)計(jì)成16384個(gè)槽
本文主要介紹了為什么RedisCluster設(shè)計(jì)成16384個(gè)槽,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09Redis 哨兵機(jī)制及配置實(shí)現(xiàn)
本文主要介紹了Redis 哨兵機(jī)制及配置實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Redis配合SSDB實(shí)現(xiàn)持久化存儲(chǔ)代碼示例
這篇文章主要介紹了Redis配合SSDB實(shí)現(xiàn)持久化存儲(chǔ)代碼示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11詳解使用Redis SETNX 命令實(shí)現(xiàn)分布式鎖
本篇文章主要介紹了詳解使用Redis SETNX 命令實(shí)現(xiàn)分布式鎖,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01如何利用Redis?List實(shí)現(xiàn)Java數(shù)據(jù)庫分頁快速查詢
這篇文章主要給大家介紹了關(guān)于如何利用Redis?List實(shí)現(xiàn)Java數(shù)據(jù)庫分頁快速查詢的相關(guān)資料,Redis是一個(gè)高效的內(nèi)存數(shù)據(jù)庫,它支持包括String、List、Set、SortedSet和Hash等數(shù)據(jù)類型的存儲(chǔ),需要的朋友可以參考下2024-02-02Redis數(shù)據(jù)類型string和Hash詳解
大家都知道Redis中有五大數(shù)據(jù)類型分別是String、List、Set、Hash和Zset,本文給大家分享Redis數(shù)據(jù)類型string和Hash的相關(guān)操作,感興趣的朋友跟隨小編一起看看吧2022-03-03淺析Redis中紅鎖RedLock的實(shí)現(xiàn)原理
RedLock?是一種分布式鎖的實(shí)現(xiàn)算法,由?Redis?的作者?Salvatore?Sanfilippo(也稱為?Antirez)提出,本文主要為大家詳細(xì)介紹了紅鎖RedLock的實(shí)現(xiàn)原理,感興趣的可以了解下2024-02-02