Redis简介
Redis(Remote Dictionary Server)是由Salvatore Sanfilippo开发的key-value(键值对)存储系统。
传统数据库(关系型数据库) |
NoSQL | |
---|---|---|
代表 | MySQL、Oracle、SQL Server | Redis、MongoDB |
数据结构 | 以“表”的形式(表结构具有严格的数据模式约束) | 使用比较简单的数据结构(比如Redis用的是键值对) |
物理位置 | 存储在硬盘上(常规情况) | 存储在内存中(支持持久化到磁盘) |
适用场景 | 存储大规模的数据 | 数据量小但对性能有一定要求 |
根据业内的项目实践经验,Redis主要具有如下优点:
- 由于数据是存储在内存中的,因此查找数据的速度比较快。
- 支持的数据类型比较多,比如支持字符串、列表和哈希表等。
- 可以支持事务,同时支持数据的持久化,即能把内存中的数据存入硬盘。
不过,Redis也有一些缺点:
- Redis难以支持在线扩容,尤其是在集群场景里,当存储容量达到上限后,在线扩容会非常困难。
- Redis是基于内存的,如果短时间内存入大量数据,可能会导致内存问题,比如会出现OOM(内存溢出)异常。
- Redis工作时是基于单线程的,所以无法充分利用多核机器里的CPU。
在项目里,基于Redis的优缺点,一般会将它用在缓存、秒杀、计数器和排行榜等和性能密切相关的场景里(且更适合以分布式集群的方式提供服务)。
Docker简介
Docker的三个概念:仓库、镜像、容器
- 仓库:代码中心,可以在本地,也可以在远端,能够存储镜像。
- 镜像:静态的。
- 容器:镜像运行时的实体(由类实例化而成的对象)。
开发意义上的Docker包含Docker软件和Docker命令。
Docker官网:https://www.docker.com/
查看安装版本(命令行):docker version
查看本地镜像:docker images
下载镜像:docker pull 镜像名:标签(如果不指定标签,默认为latest,即最新版本)
删除镜像:docker rmi 镜像名:标签 或 docker rmi 镜像ID
运行镜像:docker run -it 镜像名:标签 /bin/bash
(-it表示在终端交互式操作,/bin/bash表示容器启动后需要执行的命令,这里是启动shell)
查看当前所有容器:docker ps -a(默认只返回处于Up状态的容器,带参数-a才能显示全部)
删除容器:docker rm 容器ID
运行Redis镜像:docker run -itd --name myFirstRedis -p 6379:6379 redis:lastest
-it在终端交互式操作
d表示在后台运行
--name指定该容器的名字
-p指定容器的6379端口映射到宿主机(运行Docker的机器)的6379端口(这样就能在容器外部以宿主机ip:6379的方式来访问Redis服务)
(名为myFirstRedis的容器处于Up状态,并且通过6379端口对外提供服务)
查看Redis启动效果:docker logs myFirstRedis
通过docker exec进入Redis容器:docker exec -it myFirstRedis /bin/bash
(docker exec表示在运行容器中执行命令,/bin/bash表示具体要执行的命令,这里是打开shell)
(进入了名为myFirstRedis的容器,该容器基于Linux操作系统。再通过redis-cli命令创建一个客户端——连接到容器里的Redis服务器,随后通过set命令创建一个值为Hugo的name变量,再通过get命令来获取name变量的值)
(通过两次exit回到Windows命令行。第一次退出的是用redis-cli进入的Redis运行窗口,第二次退出的是用docker exec命令进入的Linux容器)
停止容器:docker stop myFirstRedis(注意:停止的是容器,而不是Redis服务)
重启容器:docker start myFirstRedis 或 docker restart myFirstRedis
(区别:直接docker restart不会挂载容器所关联的文件系统,也就是说不一定会加载到更改后的配置项参数。所以建议先docker stop,再docker start)
查看Redis的版本
开启容器,进入容器的shell
查看Redis服务器的版本:redis-server --version
查看Redis客户端的版本:redis-cli --version
完整流程梳理:
- 安装Docker软件
- 在命令行中输入docker pull redis下载最新的Redis镜像
- 输入docker images来确认镜像
- 输入docker run -itd --name myFirstRedis -p 6379:6379 redis:latest,根据镜像来创建并运行一个容器
- 输入docker ps -a查看对应的创建好的容器
- 输入docker stop myFirstRedis让容器进入Exited状态
- 输入docker rm myFtrstRedis删除容器(删除前必须确保Exited状态)
- 输入docker start myFirstRedis启动处于Exited状态的容器
- 在创建并启动容器后,可以通过docker logs myFirstRedis查看该容器里Redis服务器的启动情况
- 也可以通过docker exec -it myFirstRedis /bin/bash进入容器并启动shell
- 启动shell之后可以通过redis-cli创建一个连接到Redis服务器的客户端(继而通过客户端执行各种Redis命令,比如exit退出命令)
- 需要重启容器的话,建议先docker stop myFirstRedis,再docker start myFirstRedis来实现
- 需要停止Redis服务器的话,先通过redis-cli命令连接到服务器,再输入shutdown来实现
归纳图
<完>