【17.0】Redis介绍与安装

【一】什么是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】资源网址

【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地址进行连接。
    • 图形化客户端链接:

【五】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:

(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地址;

  • 配置Redis地址信息,注意使用redismod的容器IP地址;

  • 打开Dashboard选择Redis;

  • 接下来就可以看到一个非常完善的Redis监控仪表盘了,基本能满足Redis的监控需求。

posted @ 2023-08-19 17:11  Chimengmeng  阅读(118)  评论(0编辑  收藏  举报