1.普通安装与启动
需要redis.conf文件 可以移步主页下载
深入理解Redis List队列底层数据结构
- centos7安装redis6.2.5
下载解压安装包:
wget http://download.redis.io/releases/redis-6.2.5.tar.gz
tar -zvxf redis-6.2.5.tar.gz
安装并指定安装目录:
cd redis-6.2.5
make
make install PREFIX=安装目录
启动:
- 前台启动:
cd /usr/local/redis/bin
./redis-server
- 后台启动
//备份配置文件
cp redis-6.2.5/redis.conf redis/bin/redis.conf
//修改配置文件
cd /usr/local/redis/bin
vim redis.conf
将demonize no 改为 yes 允许redis-server线程化运行
//以当前配置文件运行redis-server
[root@lingg bin]# ./redis-server redis.conf
//查看进程
[root@lingg bin]# ps -ef | grep redis
root 9155 8362 0 14:47 pts/3 00:00:00 grep --color=auto redis
root 32561 31917 0 14:06 pts/0 00:00:00 vim redis.conf
查看是否能够正常使用redis
[root@lingg redis]# cd bin
[root@lingg bin]# ll
总用量 18972
-rwxr-xr-x 1 root root 4829552 9月 18 14:23 redis-benchmark
lrwxrwxrwx 1 root root 12 9月 18 14:23 redis-check-aof -> redis-server
lrwxrwxrwx 1 root root 12 9月 18 14:23 redis-check-rdb -> redis-server
-rwxr-xr-x 1 root root 5003160 9月 18 14:23 redis-cli
-rw-r--r-- 1 root root 93725 9月 18 14:47 redis.conf
lrwxrwxrwx 1 root root 12 9月 18 14:23 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 9491672 9月 18 14:23 redis-server
[root@lingg bin]# ./redis-server redis.conf
[root@lingg bin]# ps -ef |grep redis
root 13670 1 0 15:58 ? 00:00:00 ./redis-server 127.0.0.1:6379
root 13690 13462 0 15:58 pts/0 00:00:00 grep --color=auto redis
[root@lingg bin]# ./redis-cli
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379>
表示已经可以成功使用
2.docker镜像方式启动
- 拉取redis官方镜像 我本地已经存在了
[root@lingg ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
Digest: sha256:e595e79c05c7690f50ef0136acc9d932d65d8b2ce7915d26a68ca3fb41a7db61
Status: Image is up to date for redis:latest
[root@lingg ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ad4c705f24d3 9 days ago 133MB
redis latest 02c7f2054405 2 weeks ago 105MB
-
启动redis容器
查了下网上的资料,说redis镜像中没有配置文件,所以需要从宿主机将修改好的配置文件通过卷挂载的方式挂载到容器内部,并且通过端口映射将6379端口暴露出去
[root@lingg bin]# docker run -it -v /usr/local/redis/bin/data/:/usr/local/src/data -p 30000:6379 --name redis 02c7f2054405 /bin/bash
- 查看容器状态
[root@lingg ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8448ceaaac97 02c7f2054405 "docker-entrypoint..." 10 minutes ago Up 10 minutes 0.0.0.0:30000->6379/tcp redis
7a226d1759f8 ad4c705f24d3 "/docker-entrypoin..." 2 days ago Up 2 days 0.0.0.0:80->80/tcp condescend
- 查看容器内redis的启动方式
root@8448ceaaac97:/usr/local/src/data# cd /usr/local/bin
root@8448ceaaac97:/usr/local/bin# ls -al
total 27632
drwxr-xr-x 2 root root 4096 Sep 3 13:26 .
drwxr-xr-x 1 root root 4096 Sep 2 00:00 ..
-rwxrwxr-x 1 root root 374 Sep 3 13:24 docker-entrypoint.sh
-rwxr-xr-x 4 root root 2404352 Apr 16 2020 gosu
-rwxr-xr-x 3 root root 6903152 Sep 3 13:26 redis-benchmark
lrwxrwxrwx 1 root root 12 Sep 3 13:26 redis-check-aof -> redis-server
lrwxrwxrwx 1 root root 12 Sep 3 13:26 redis-check-rdb -> redis-server
-rwxr-xr-x 3 root root 6754896 Sep 3 13:26 redis-cli
lrwxrwxrwx 1 root root 12 Sep 3 13:26 redis-sentinel -> redis-server
-rwxr-xr-x 3 root root 12206280 Sep 3 13:26 redis-server
- 进入放有redis配置文件的目录进行测试启动
root@8448ceaaac97:/data# cd /usr/local/src/ data
root@8448ceaaac97:/usr/local/src/data# ls
redis.conf
root@8448ceaaac97:/usr/local/src/data# redis-server redis.conf
root@8448ceaaac97:/usr/local/src/data# redis-cli
127.0.0.1:6379> keys *
(empty array)
[root@lingg bin]# netstat -tanlp |grep 6379
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 13670/./redis-serve
tcp 0 0 127.0.0.1:46564 127.0.0.1:6379 TIME_WAIT -
tcp6 0 0 ::1:6379 :::* LISTEN 13670/./redis-serve
[root@lingg bin]# kill 13670
由于刚才容器中已经启动了redis-server 所以按照正常的思路,直接在宿主机上用redis-cli连接127.0.0.1的30000端口就应该可以成功:
[root@lingg bin]# ./redis-cli -h 127.0.0.1 -p 30000
127.0.0.1:30000> keys *
Error: Connection reset by peer
结果发生了错误:Error: Connection reset by peer
这是在容器外连接容器内redis-server的一个坑
我们首先执行docker inpect 命令在Networks模块中查看容器的IP地址,然后将redis容器中的redis.conf文件中的bind 改为docker容器的IP地址
docker inspect 8448ceaaac97
修改配置文件
重新连接30000端口
[root@lingg data]# cd /usr/local/redis/bin
[root@lingg bin]# ./redis-cli -p 30000
127.0.0.1:30000> keys *
(empty array)
成功!
若有不足,还请指正!