Redis 是一个强大的开源的高性能的key-value数据库,值 ( value ) 可以是字符串 ( String ) , 哈希 ( Map ) , 列表 ( list ) , 集合 ( Sets ) 或有序集合 ( Sorted Sets ) 等类型。每秒可以进行11万次读取和8万次写入操作。Redis还提供了多种特性,如发布/订阅、通知、key过期等。Redis采用自己实现的分离器来实现高速的读写操作,效率非常高。Redis是一个简单、高效、分布式、基于内存的缓存工具,通过网络连接提供Key-Value式的缓存服务。
一、获取docker redis镜像
唔~~~又到众所周知的原因了,想要拉取镜像,点击看第一篇的3.3小节
1 | sudo docker pull redis:latest |
1 | $ sudo docker image ls |
二、虚拟机创建映射目录,放置配置文件
1 | # 路径由用户决定 |
配置文件redis.conf,路径位于~/redis/config
1 | aceserver:~/redis/config$ sudo vim redis.conf |
1 |
|
三、运行容器
1 | $ sudo docker run -p 6379:6379 --restart=always --name redis2 -v ~/redis/config:/usr/local/etc/redis -v ~/redis/data:/data -v ~/redis/logs:/logs -d redis:7.2.3 redis-server /usr/local/etc/redis/redis.conf --appendonly yes |
参数解释
-p 容器6379端口映射到宿主机6379
–name 容器name
-v ~/redis/config:/usr/local/etc/redis 容器内/usr/local/etc/redis文件夹映射到宿主机的~/redis/config,data和logs同理,这样redis.conf配置文件会存在于容器内/usr/local/etc/redis文件夹下
-d daemon守护进程运行
1 | $ sudo docker ps -a |
检查容器运行发现退出了,检查一下
1 | $ sudo docker logs 9a96660e8f33 |
Redis 需要内存超分配(vm.overcommit_memory)被设置为 1。这意味着操作系统将始终允许分配所有请求的内存,这对于 Redis 的某些操作至关重要。
如果没有正确设置,当 Redis 尝试创建快照或进行某些类型的复制时,可能会因为内存不足而失败。这可能导致数据丢失或其他问题。
临时更改:在宿主机上执行以下命令,系统重启后失效
1 | $ sudo sysctl vm.overcommit_memory=1 |
永久更改:编辑 /etc/sysctl.conf 文件
1 | # 添加以下内容 |
运行
1 | $ sudo sysctl -p |
四、物理机(笔记本或台式电脑)测试连接虚拟机的6379端口
与mysql一样,使用navicat测试
在物理机的navicat填好对应资料后,点击左下角的测试连接,可以看到连接成功
五、进入redis容器
进入redis容器并尝试登录和写入数据到数据库
1 | $ sudo docker exec -it redis容器ID /bin/bash |
物理机使用navicat查询数据
参考资料:
https://blog.csdn.net/H1727548/article/details/132512038 介绍
https://developer.aliyun.com/article/1388047 docker部署
https://blog.csdn.net/qq_42146402/article/details/130204064 配置说明
https://hub.docker.com/_/redis 官方镜像
https://blog.csdn.net/m0_57236802/article/details/134726043 overcommit问题
https://redis.com.cn/commands.html 命令文档