【一】什么是Redis
Redis :软件,存储数据的,速度非常快,redis是一个key-value存储系统(没有表的概念),cs架构的软件
服务端 客户端(python作为客户端,java,go,图形化界面,命令窗口的命令)
-
Redis(Remote Dictionary Server)是一个开源的、基于内存的数据存储系统,被广泛用于缓存、消息队列、实时统计等场景。
- 它以高速读写和丰富的数据结构支持而闻名。
-
Redis是一种软件,它允许快速存储和访问数据。
- 作为一个内存数据库,Redis的特点之一是其快速读写能力。
- 通过将数据存储在内存中,Redis可以在毫秒级别提供低延迟的数据访问。
-
另一个关键的特点是Redis的键值存储模型。
- 它没有传统关系型数据库中的表的概念,而是使用简单的键值对来存储和检索数据。
- 每个键都与一个值相关联,这使得对数据的操作非常简单和高效。
-
Redis采用C/S架构,由一个服务端和多个客户端组成。
- 服务端负责存储和管理数据,而客户端则通过连接到服务端来进行数据的读写操作。
- 客户端可以使用多种编程语言来与Redis进行交互,如Python、Java、Go等。
- 此外,Redis还提供了图形化界面和命令行工具,方便用户进行管理和监控。
-
除了基本的键值存储外,Redis还支持丰富的数据结构,如字符串、哈希表、列表、集合和有序集合等。
- 这些数据结构允许开发人员更灵活地操作数据,例如可以以原子方式对数据进行增删改查,支持集合运算和排序等功能。
-
此外,Redis还提供了各种高级功能,如持久化、发布/订阅、事务和管道等。
- 其中,持久化功能允许将数据保存到磁盘上,以避免数据丢失;
- 发布/订阅机制支持实时消息传递;
- 事务和管道提供了原子性的多个操作,从而确保数据的一致性和完整性。
-
总之,Redis是一个功能强大的、高性能的内存数据库,通过键值存储模型和丰富的数据结构,为开发人员提供了简单、快速和灵活的数据存储和访问解决方案。
【二】关系型数据库和非关系型数据库
【1】关系型
- 关系型数据库是一种基于关系模型的数据库管理系统。
- 常见的关系型数据库包括MySQL,PostgreSQL,Oracle,SQL Server和DB2等。
- 这些数据库通过使用SQL(Structured Query Language)来管理和操作数据。
关系型数据库的主要特点包括:
- 数据以表格的形式组织:
- 关系型数据库使用表格来存储数据,每个表格由列和行组成,类似于电子表格。
- 数据之间的关系:
- 在关系型数据库中,不同表格之间可以建立关系,通过主键和外键来定义和维护数据之间的关系。
- 事务支持:
- 关系型数据库提供ACID(原子性、一致性、隔离性和持久性)事务支持,确保数据的完整性和可靠性。
- 数据一致性:
- 关系型数据库强调数据的结构和完整性,通过约束和规则来保证数据的一致性。
- 数据查询:
- 关系型数据库使用SQL来进行数据的查询和操作,具有灵活、强大的查询能力。
去IOE:国产化:
- 在信息技术领域,去IOE(Input-Output Equipment)是指替代国际知名供应商的产品和解决方案,实现国产化和自主可控。
- 以下是一些例子:
IBM被国内厂商替代:浪潮信息、曙光、联想
- 例如,在服务器领域,国内公司如浪潮信息、曙光和联想等厂商推出了自己的服务器产品,与IBM的产品进行竞争。
- 这些国产服务器在性能、可靠性和成本效益方面不断提高,并且逐渐获得市场认可。
Oracle被国内公司替代:数据、达梦等
- 在数据库领域,数据和达梦等国内公司提供了与Oracle数据库相媲美的产品和解决方案。
- 这些国产数据库在性能、安全性和价值方面与Oracle数据库具有可比较的水平,并且在国内市场也取得了一定的市场份额。
EMC存储被国产存储替代:
- 国内一些企业如华为、浪潮信息等也提供了自己的存储产品,取代了EMC存储的地位。
- 这些国产存储解决方案在性能、容量、可靠性和灵活性方面与国际品牌存储产品相匹敌,并且在满足国内市场需求的同时,实现了国产化的目标。
通过国产化替代国际知名供应商的产品和解决方案,我们可以实现更多的自主可控,提高信息技术产品的安全性、可靠性和成本效益。
- 国内企业的不断发展和创新,也推动了我国信息技术产业的快速发展,并在全球市场中占据重要地位。
【2】非关系型数据库(NoSQL)
-
非关系型数据库,也被称为NoSQL数据库,是相对于关系型数据库而言的一种数据库技术。
- 它们在数据存储和访问方式上与传统的关系型数据库有所不同。
-
常见的非关系型数据库包括Redis(缓存数据库),MongoDB(面向文档的数据库),Elasticsearch(大数据搜索和分析引擎)等。
非关系型数据库具有以下特点:
- 非结构化数据存储:
- 非关系型数据库可以存储半结构化或非结构化的数据,例如JSON文档、键值对等格式。
- 这使得非关系型数据库更适合存储灵活、变化多样的数据。
- 高可伸缩性:
- 非关系型数据库通常采用分布式架构,可以方便地进行水平扩展,以应对数据量的增长和高并发访问的需求。
- 高性能:
- 由于非关系型数据库通常采用了一些优化策略,如内存存储、键值索引等,因此在某些场景下能够提供更高的性能和吞吐量。
- 弱一致性:
- 与关系型数据库不同,非关系型数据库在一致性要求上可能会降低,强调更高的可用性和分区容错性。
- 灵活的数据模型:
- 非关系型数据库不需要事先定义表格结构,可以根据应用程序需要动态添加字段和属性,提供了更大的灵活性。
- 需要注意的是,NoSQL并不意味着不支持SQL查询语言,而是指相对于关系型数据库,NoSQL数据库提供了更多的数据存储和访问模型选择。
- 因此,NosQL是No only SQL的缩写,强调它对关系型数据库的补充,而不是完全替代关系型数据库。
【三】Redis的特点
-
Redis是开源软件,使用客户端-服务端(CS)架构。
- 它被设计为一个用于存储数据的高性能系统。
-
Redis采用了key-value存储模型,并提供了五种主要的数据类型:
-
字符串、哈希表、列表、集合和有序集合。
-
这些数据类型使得Redis在处理不同类型的数据时更加灵活和高效。
-
-
Redis具有出色的性能。
-
首先,它将数据存储在内存中,实现了纯内存存储的优势,因此能够快速读写数据。
-
其次,Redis使用了IO多路复用的网络模型,允许处理多个并发连接,提高了并发性能。
-
最后,Redis的数据操作是单线程的,避免了线程间的切换开销,并且不需要加锁和处理数据错乱的问题。
-
-
Redis支持持久化功能,可以将数据存储到硬盘上,以防止数据丢失。
- 通过将数据写入磁盘,即使在重启或宕机情况下,Redis也能够从磁盘加载数据恢复运行。
-
由于Redis具有快速读写和高性能的特点,它经常被用作缓存数据库。
- 缓存是存储在内存中的数据副本,用于提供快速访问,减轻其他数据源的负载压力。
- Redis作为缓存数据库可以显著提高系统的性能和响应速度。
-
综上所述,Redis以其开源性、快速读写、支持不同数据类型、持久化功能和作为缓存数据库的应用场景而受到广泛关注。
【四】Redis安装
详解上述内容,要求回答时按照上述格式并根据原内容扩充和详解
【1】引入
- Redis是用C语言编写的,因此需要在不同平台上进行编译才能运行。
- 以下是一些需要注意的事项:
- Redis使用了IO多路复用的epoll模型,而Windows不支持epoll。
- 官方原生的Redis不支持Windows版本。
- 微软官方对Redis进行改动,并编译成可在Windows上运行的版本(仅滞后于3.x版本)。
- 第三方提供了兼容Windows的Redis 5.x版本。
【2】资源网址
- 以下是一些Redis相关资源的网址:
- Redis官方网站:https://redis.io/download/
- Redis中文网:http://redis.cn
- Windows上的Redis 3.x版本:https://github.com/microsoftarchive/redis/releases
- Windows上的Redis 5.x版本:https://github.com/tporadowski/redis/releases/
【3】安装(一路下一步)
-
在安装完成后,可以在安装路径下找到以下文件:
-
redis-cli.exe:
- 用于启动Redis客户端(类似于MySQL的mysql命令行工具)。
-
redis-server.exe:
- 用于启动Redis服务器(类似于MySQL的mysqld服务)。
-
redis.windows-service.conf:
- Redis的配置文件(类似于MySQL的my.ini文件)。
-
在安装过程中还会自动创建Redis服务,命令为:
redis-server.exe redis.windows-service.conf
-
【4】启动Redis服务端
- 可以通过以下方式启动Redis客户端:
- 在命令行中输入"redis"即可启动Redis服务。
- 在命令行中输入
redis-server
配置文件路径"指定要使用的配置文件来启动Redis服务。 - 也可以使用服务来启动Redis。
【5】连接Redis客户端
- 有多种方式可以连接到Redis客户端:
- 命令行客户端:在命令行中输入
redis-cli
即可连接本地的默认端口6379。- 也可以通过
redis-cli -p 6379 -h 127.0.0.1
的方式指定端口和IP地址进行连接。
- 也可以通过
- 图形化客户端链接:
- 最新版本的Navicat已经支持Redis的连接,但是需要付费。
- Redis Desktop Manager(https://resp.app/)是一个常用的图形化客户端工具,使用Qt编写。
- 这个工具是收费的,但是在Redis开发者中被广泛使用。
- Python语言中也有Redis相关的模块,可以使用
pip install redis
进行安装。
- 最新版本的Navicat已经支持Redis的连接,但是需要付费。
- 命令行客户端:在命令行中输入
【五】Redis客户端的连接与停止
- 客户端连接 Redis 服务器的常用方式有命令行连接、图形化客户端以及使用 Python 进行连接。
【1】命令行连接:
- 使用命令行工具 redis-cli 可以连接到 Redis 服务器。
- 可以通过以下命令进行连接:
redis-cli -p 端口号 -h 地址
- 其中,-p 参数指定连接的端口号,-h 参数指定连接的地址。例如:
redis-cli -p 6379 -h localhost
- 这将在本地连接到默认端口号为 6379 的 Redis 服务器。
【2】图形化客户端:
- 除了命令行连接,还可以使用图形化客户端工具连接到 Redis 服务器。
- 这些工具提供了直观友好的用户界面,方便进行操作和管理。
- 一些常见的图形化客户端包括 Redis Desktop Manager 和 Redis Commander。
【3】使用 Python 进行连接:
- Python 提供了多个 Redis 客户端库,如 redis-py 和 aioredis 等。
- 可以使用这些库在 Python 中连接 Redis 服务器,并进行数据操作。
- 连接的步骤通常包括创建 Redis 客户端对象、连接到 Redis 服务器、执行命令等。
- 以下是使用 redis-py 连接 Redis 的示例代码:
import redis
# 创建 Redis 客户端对象
r = redis.Redis(host='localhost', port=6379, db=0)
# 执行命令
r.set('key', 'value')
result = r.get('key')
print(result)
【4】停止 Redis 服务器的方式有两种:
- 客户端连接上后,通过执行
shutdown
命令停止服务:
redis> shutdown
- 使用该命令会向 Redis 服务器发送停止信号,然后服务器会正常关闭。
- 在服务中直接停止:
- 如果 Redis 是作为一个后台服务运行的,可以通过向 Redis 进程发送终止信号来停止服务。
- 具体方式可以使用操作系统提供的工具,如在 Linux 中可以使用
kill
命令,Windows 中可以使用任务管理器等。
【补充】Redis Desktop Manager的安装步骤
- 打开Redis Desktop Manager的官方网站:https://resp.app/
- 在网站上找到并点击下载按钮,以获得适用于您操作系统的安装程序。
- Redis Desktop Manager支持Windows、Mac和Linux等操作系统。
- 下载完成后,找到下载的安装程序文件,并双击运行。
- 按照安装程序的指示进行安装。
- 通常情况下,您只需按照默认选项进行安装即可。如果您希望更改安装路径或其他设置,可以根据自己的需求进行调整。
- 完成安装后,您可以从开始菜单(Windows)或应用程序文件夹(Mac)中找到Redis Desktop Manager。
- 双击打开Redis Desktop Manager应用程序。
- 当您第一次打开Redis Desktop Manager时,系统可能会要求您提供Redis数据库的连接信息。根据您的具体情况,输入正确的主机名、端口号、密码等信息,并点击"连接"按钮。
- 如果一切正常,Redis Desktop Manager将会连接到您的Redis数据库,并且您将能够通过图形界面管理和操作您的数据。
【1】主界面
【2】连接本地Redis
【3】本地数据库列表
【4】服务器doker搭建RedisMod服务
(1)执行doker命令
- 使用 Docker 命令拉取 RedisMod 镜像:
docker pull redislabs/redismod
.
docker pull redislabs/redismod
(2)运行容器并启动 RedisMod 服务
docker run -p 6379:6379 redislabs/redismod
(3)配置服务器防火墙:
- 确保服务器的防火墙已允许通过 RedisMod 所使用的端口(默认为 6379)的流量。
(4)在本地电脑中安装 RedisInsight:
- 访问 RedisInsight 下载页面(https://redislabs.com/redisinsight/)并下载适用于您的操作系统的安装程序。
- 按照安装程序的指示进行安装。
(5)连接 RedisInsight 到 RedisMod:
- 在 RedisInsight 启动后,点击 "Connect to Database" 或相似按钮。
- 输入服务器的 IP 地址、端口号(6379),以及其他必要的连接信息。
- 单击 "Connect" 连接到 RedisMod 服务。
【5】服务器Docker Compose搭建RedisMod服务
(1)安装并正确配置了 Docker Compose
- 确保您已经安装并正确配置了 Docker Compose。您可以通过运行
docker-compose version
命令来检查 Docker Compose 的版本和状态。
(2)创建一个名为 docker-compose.yml
的文件
- 创建一个新的文件夹,并在文件夹中创建一个名为
docker-compose.yml
的文件。您可以使用任何文本编辑器来创建和编辑该文件。
(3)定义 RedisMod 服务的配置
- 在
docker-compose.yml
文件中定义 RedisMod 服务的配置。以下是一个示例配置的基本结构:
# yamlversion: '3'
services:
redis-mod:
image: redislabs/redismod
ports:
- 6379:6379
restart: always
-
在这个示例配置中,我们指定了 RedisMod 服务的镜像使用
redislabs/redismod
,将容器内部的 Redis 端口 6379 映射到主机上的同一端口,并设置容器的重启策略为 "always",以便在容器退出时自动重启。 -
保存并关闭
docker-compose.yml
文件。
(4)导航到包含 docker-compose.yml
文件的文件夹
- 打开终端或命令行界面,并导航到包含
docker-compose.yml
文件的文件夹。
(5)运行 Docker Compose
- 使用以下命令运行 Docker Compose,并在后台启动 RedisMod 服务:
docker-compose up -d
此命令会执行以下操作:
- 检查并创建所需的 Docker 容器。
- 启动 RedisMod 服务容器,并将其放置在后台运行。
- 根据
docker-compose.yml
文件中的配置,映射 Redis 端口和任何其他指定的端口。
(6)在确认没有出现错误并成功启动 RedisMod 服务
- 在确认没有出现错误并成功启动 RedisMod 服务后,就可以使用相应的客户端工具连接到 RedisMod 服务并进行操作了。
# docker-compose up -d
[+] Running 2/2
✔ Network docker_default Created 1.9s
✔ Container docker-redis-mod-1 Started 0.3s
[root@VM-8-11-opencloudos docker]#
- 通过以上步骤,您可以使用 Docker Compose 来自动化运行 RedisMod 服务,并在需要时确保服务的高可用性和稳定性。
【6】链接RedisMod
- 输入服务器IP
- 服务器端口(一定要开发端口)
链接成功
【补充】可视化监控(Grafana)
(1)安装Grafana
- 首先下载Grafana的Docker镜像;
docker pull grafana/grafana
- 下载完成后运行Grafana;
docker run -p 3000:3000 --name grafana \
-d grafana/grafana
- 接下来下载Prometheus的Docker镜像;
docker pull prom/prometheus
- 在
/mydata/prometheus/
目录下创建Prometheus的配置文件prometheus.yml
:
global:
scrape_interval: 5s
- 运行Prometheus,把宿主机中的配置文件
prometheus.yml
挂载到容器中去;
docker run -p 9090:9090 --name prometheus \
-v /mydata/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-d prom/prometheus
- 进入grafana容器并安装
redis-datasource
插件,安装完成后需要重启grafana服务。
docker exec -it grafana /bin/bash
grafana-cli plugins install redis-datasource
(2)使用
- 连接到redismod需要使用到它的容器IP地址,使用如下命令查看redismod容器的IP地址;
- 在Grafana中配置好Redis数据源,使用
admin:admin
账户登录,访问地址;http://192.168.3.105:3000/
- 配置Redis地址信息,注意使用redismod的容器IP地址;
- 打开Dashboard选择Redis;
- 接下来就可以看到一个非常完善的Redis监控仪表盘了,基本能满足Redis的监控需求。