Redis-概念、安装、基本配置

ops/2024/11/1 5:13:53/

文章目录

  • 一、Redis及Redis集群概念、分布式系统概念
    • 一-1 Redis是什么
    • 一-2 什么是分布式系统、分布式缓存
    • 一-3 什么是Redis集群、实现Redis集群的方法有哪些、这些跟Redis的sentinel和cluster有什么关系
    • 一-4 Redis的库
    • 一-5 Redis中的Key与Value是什么、如何进行操作使用它们
      • 添加
      • 查看
        • 企业中谨慎使用`key *`
        • 正确查看方式
      • 企业中谨慎使用`flushdb`以及`flushall`
      • 删除以及设置过期时间
    • 一-6 Redis和其他数据缓存服务的对比
  • 二、Redis的安装与基本配置
    • 二-1 Redis源码安装
    • 二-2 *源码安装中间件的一般流程
      • 1. 准备工作
        • a. 安装编译工具
        • b. 安装依赖库
      • 2. 下载源码
        • a. 下载源码包
        • b. 解压源码包
      • 3. 配置
        • a. 进入源码目录
        • b. 运行配置脚本
      • 4. 编译
        • a. 编译源码
        • b. 编译安装
      • 5. 配置服务
        • a. 配置服务环境
        • b. 配置服务参数
      • 6. 启动服务
        • a. 启动中间件服务
        • b. 设置服务自启动
      • 7. 验证安装
        • a. 检查服务状态
        • b. 测试服务功能
    • 二-3 redis-server命令和redis-cli命令有是什么用、如何使用
      • 具体有什么用
      • 如何使用
      • 使用`redis-server`和`redis-cli`启动、关闭redis服务
    • 二-4 redis的配置文件
      • Redis库内查看所有配置、临时修改配置
      • 修改redis配置文件中的端口后启动、关闭如何通过指定端口的redis服务
        • 启动
        • 关闭
      • redis守护进程模式的配置
      • Redis的安全配置
        • Redis的保护模式protected-mode配置
          • 如何取消保护模式
          • 一定要注意bind后的IP地址是当前机器的IP
          • 客户端安装redis后使用redis-cli访问redis的服务器
        • Redis的访问密码设置
          • 服务端设置
          • 客户端访问测试(客户端得安装redis,然后使用redis-cli访问)(本地也是客户端,也能使用redis-cli)
          • 设置requirepass有什么用
        • requirepass配置体现在哪
        • 如何使用requirepass
      • Redis的日志配置
        • Redis的日志配置有什么用
        • Redis的日志配置体现在哪
        • 如何进行Redis的日志配置

一、Redis及Redis集群概念、分布式系统概念

一-1 Redis是什么

Redis(Remote Dictionary Server)是一个开源的高性能键值对存储系统。它是基于内存的数据结构存储系统,可以用作数据库缓存和消息代理。Redis支持多种数据结构,如字符串、哈希、列表、集合和有序集合。它具有高性能、持久化支持、发布/订阅、分布式缓存、事务支持等特点。


哈希数据结构,通常称为哈希表(Hash Table),是一种实现通过键(Key)快速访问数据值(Value)的数据结构。它通过使用哈希函数将键转换为数组(或称为槽位)的索引来实现快速访问。以下是哈希表的一些关键特性和组成部分:

  1. 哈希函数(Hash Function)

    • 哈希函数是一个算法,它接收一个键作为输入,并产生一个整数(索引)作为输出。
    • 这个输出值用于确定键值对在哈希表中存储的位置。
  2. 数组(Array)

    • 哈希表通常使用数组来存储数据。
    • 数组中的每个位置称为“槽”或“桶”,用于存放键值对。
  3. 冲突解决(Conflict Resolution)

    • 当两个不同的键通过哈希函数计算出相同的索引时,会发生冲突。

    • 常见的冲突解决方法包括链地址法(Chaining)和开放寻址法(Open Addressing)。

    • 链地址法:在每个数组槽位上维护一个链表,所有哈希到该槽位的元素都会被添加到链表中。

    • 开放寻址法:当发生冲突时,寻找另一个空的槽位来存储数据,常见的策略有线性探测、二次探测和双重散列。

  4. 动态扩容(Dynamic Resizing)

    • 随着元素的增加,哈希表可能会变得拥挤,导致性能下降。
    • 为了维持操作的效率,哈希表可能需要动态地增加其大小,这通常涉及到重新计算所有元素的哈希值并将它们分配到新的更大的数组中。
  5. 性能(Performance)

    • 在理想情况下,哈希表的查找、插入和删除操作的时间复杂度为O(1)。
    • 然而,在最坏情况下(例如,所有元素都哈希到同一个槽位),时间复杂度可能退化为O(n),其中n是元素的数量。

哈希表因其高效的数据访问能力而被广泛应用于各种场景,包括数据库索引、缓存实现、唯一性检查等。正确选择哈希函数和冲突解决策略对于实现高效哈希表至关重要。


在Redis中,“哈希”指的是哈希表数据结构。Redis中的哈希表是一种键值对集合,其中每个键(key)都映射到一个值(value)。这种数据结构非常适合存储对象或者将键映射到一个值的场景。

哈希表在Redis中通过HSETHGETHGETALL等命令进行操作。例如:

  • HSET命令用于设置哈希表中的字段值。
  • HGET命令用于获取哈希表中指定字段的值。
  • HGETALL命令用于获取哈希表中的所有字段和值。

哈希表的优势在于:

  1. 快速访问:哈希表提供了快速的查找、插入和删除操作,时间复杂度接近O(1)。
  2. 灵活存储:可以存储复杂的数据结构,如对象或字典。
  3. 节省空间:通过键值对的方式存储,避免了数据的冗余。

总之,“哈希”在Redis中指的是一种高效的键值对数据结构,适用于存储和操作复杂的数据。


“消息代理”(Message Broker)是一种软件组件,它在不同的应用程序之间传递消息。在Redis的上下文中,消息代理的功能允许Redis作为一个中间人,帮助应用程序之间进行异步通信。具体来说,Redis支持发布/订阅(pub/sub)模式,这是一种消息传递机制,其中一个或多个发布者(publishers)发送消息到一个频道(channel),而订阅者(subscribers)监听这些频道以接收消息。

在Redis的发布/订阅系统中,发布者不需要知道有哪些订阅者,也不需要维护任何状态信息,它们只是简单地将消息发送到一个频道。订阅者则订阅一个或多个频道,并在有消息发布到这些频道时接收消息。这种方式使得应用程序能够解耦,因为它们不需要直接与对方通信,而是通过Redis这个中介来交换信息。

消息代理在分布式系统中非常有用,因为它可以帮助实现负载均衡、异步处理和系统解耦。在Redis中,消息代理的功能是其多功能性的一部分,使其成为一个灵活且强大的工具,适用于各种不同的应用场景。


“发布/订阅”(Publish/Subscribe)是Redis提供的一种消息通信模式。在这种模式下,消息的发送者(发布者)不会直接将消息发送给特定的接收者(订阅者),而是将消息发布到一个频道(channel)。订阅了该频道的客户端(订阅者)会接收到发布到该频道的所有消息。

具体来说:

  1. 发布(Publish):发布者向指定的频道发送消息。Redis会将这条消息存储在该频道中。

  2. 订阅(Subscribe):订阅者订阅一个或多个频道,以接收这些频道上的消息。一旦有新消息发布到订阅的频道,Redis会将消息推送给所有订阅了该频道的客户端。

  3. 消息传递:发布者发布消息后,Redis会将消息发送给所有订阅了该频道的客户端。客户端接收到消息后可以进行相应的处理。

发布/订阅模式的主要优点:

  1. 解耦:发布者和订阅者之间不需要直接通信,降低了系统的耦合度。

  2. 可扩展性:可以轻松地添加或移除订阅者,而不影响发布者。

  3. 异步通信:消息的发布和接收是异步的,提高了系统的响应性和吞吐量。

  4. 实时性:订阅者可以实时接收到发布的消息,适用于需要实时通信的场景。

总之,Redis的发布/订阅功能提供了一种高效、灵活的消息通信机制,适用于多种应用场景,如消息队列、事件通知等。


发布/订阅模式在实际应用中非常广泛,以下是一些具体的应用案例:

  1. 实时消息推送

    • 在聊天应用或社交平台中,用户发送的消息可以通过发布/订阅模式实时推送给其他在线用户。例如,当用户A发送一条消息时,这个消息会被发布到一个频道,所有订阅了该频道的用户(如用户B、C和D)都能即时收到这条消息。
  2. 数据更新通知

    • 分布式系统中,当一个节点更新了共享数据,需要通知其他节点进行同步。通过发布/订阅模式,更新数据的节点可以将更新发布到一个频道,订阅了该频道的节点会收到通知并进行相应的数据同步。
  3. 任务队列和事件通知

    • 在需要异步处理任务的场景中,如邮件发送、定时任务等,可以通过发布/订阅模式来实现。生产者将任务发布到一个频道,而消费者订阅这个频道并异步处理任务。
  4. 物联网(IoT)设备控制

    • 在物联网系统中,前端控制指令(如开关风扇)可以通过发布/订阅模式发送给设备控制端,而不需要直接与数据库交互,从而提高响应速度和系统性能。
  5. 股票价格更新

    • 金融交易系统中,股票价格的实时更新可以通过发布/订阅模式广播给所有订阅了特定股票频道的用户,确保用户能够看到最新的股票价格。
  6. 社交媒体的动态更新

    • 微博、Twitter等社交媒体平台中,用户发布的动态可以通过发布/订阅模式推送给关注者,实现动态的实时更新。
  7. 新闻或文章的实时推送

    • 新闻网站或博客平台可以利用发布/订阅模式将新发布的文章推送给在线用户或通过邮件列表订阅的用户。
  8. 游戏内的事件通知

    • 在线游戏中,如玩家达成成就、获得奖励等事件可以通过发布/订阅模式通知给玩家,增强游戏体验。

这些案例展示了发布/订阅模式在提高系统解耦、增强实时性和提升用户体验方面的优势。通过这种方式,系统的不同部分可以独立运作,同时保持高效的通信和数据同步。


"事务支持"是指Redis数据库提供了一种机制,允许用户将多个命令打包成一个事务执行。在Redis中,事务可以确保这些命令要么全部执行,要么全部不执行,从而保证了操作的原子性。Redis的事务通过以下几个命令实现:

  1. MULTI:开始一个事务,将后续的命令放入事务队列中。
  2. EXEC:执行事务队列中的所有命令。
  3. DISCARD:取消当前事务,清空事务队列。
  4. WATCH:监控一个或多个键,如果在执行EXEC之前这些键被其他客户端修改,则事务会被取消。

使用事务的好处包括:

  • 原子性:事务中的命令要么全部成功执行,要么全部不执行,不会有部分执行的情况。
  • 隔离性:Redis事务可以保证在执行过程中不会被其他客户端的命令插入,直到EXEC命令执行。
  • 一致性:事务确保数据从一个一致的状态转移到另一个一致的状态。

需要注意的是,Redis的事务不保证隔离性,因为Redis是一个基于内存的数据库,它在执行事务时不会对数据加锁。这意味着在事务执行期间,其他客户端仍然可以读取和写入数据,可能会导致所谓的“幻读”现象。因此,Redis的事务主要用于需要保证一系列操作原子性的场景,而不是用于需要严格隔离性的场景。


在这里插入图片描述
在这里插入图片描述

一-2 什么是分布式系统、分布式缓存

分布式系统是由多个独立的计算机组成的系统,这些计算机通过网络协同工作,给用户呈现一个统一的整体。分布式系统的特性包括:

  • 分布性:系统的处理单元分布在不同的物理位置。
  • 自治性:每个节点可以独立进行数据处理和资源管理。
  • 并行性:任务可以分解成多个子任务并行处理。
  • 全局性:存在全局的进程通信机制和保护机制。

分布式缓存是指在分布式环境下,将一些热门数据存储到离用户或应用更近的位置,以减少远程数据传输的延迟。Redis可以通过主从复制和分片来实现分布式缓存


在分布式缓存系统中,会将那些经常被访问的数据(即“热门数据”)存放在一个地理位置上更接近用户或者应用程序的地方。这样做的目的是为了减少数据在网络中传输的时间,也就是减少延迟,从而提高数据访问的速度和效率。简而言之,就是把用户经常需要的数据放在离他们更近的地方,以便更快地提供这些数据。


一-3 什么是Redis集群、实现Redis集群的方法有哪些、这些跟Redis的sentinel和cluster有什么关系

Redis集群是一种Redis安装方式,提供数据在多个Redis节点间的自动分片和一定程度的高可用性。实现Redis集群的方法包括:

手动配置:通过配置文件和命令行工具手动设置集群。
使用redis-trib.rb:一个Ruby脚本,用于创建和管理集群。
使用create-cluster脚本:一个简化的脚本,用于快速创建集群。


"自动分片和一定程度的高可用性"这句话的意思是:

  1. 自动分片:Redis集群能够自动将数据分散存储到多个Redis节点上,这个过程称为分片。这样可以提高数据存储的容量和访问性能。Redis集群会根据一定的规则(如哈希)将数据分配到不同的节点上,而不需要人工干预。

  2. 一定程度的高可用性:Redis集群通过数据复制和故障转移机制,在某个节点发生故障时,能够自动将请求重定向到其他健康的节点,从而保证服务的可用性。虽然Redis集群提供了一定程度的高可用性,但相比专业的分布式数据库系统,其容错能力还是有一定差距的。

总之,"自动分片和一定程度的高可用性"是Redis集群的两个主要特点,使其成为一种适合大规模分布式场景的数据存储方案。


Redis Sentinel和Redis Cluster是两种不同的高可用解决方案:

Sentinel:主要用于监控Redis实例,自动进行故障转移和通知。
Cluster:提供数据分片和高可用性,允许在多个节点上分布数据,并在节点故障时进行自动故障转移。

一-4 Redis的库

Redis的库(Database)是Redis实例中的逻辑分区,每个Redis实例默认有16个库(编号从0到15)——用于组织数据。

库的作用是将数据进行逻辑隔离。这些库在物理上是同一份数据,但在逻辑上是隔离的,每个库都可以包含不同的键值对。使用Redis的库可以通过以下命令:

SELECT <db>:选择数据库
FLUSHDB:清空当前数据库
FLUSHALL:清空所有数据库

redis-cli
# 进入redis-cli中:
select 库名

Redis的库(database)具有以下实际作用:

  1. 数据隔离:不同的数据库可以用来隔离不同应用的数据,或者隔离相同应用的不同部分数据。例如,你可以将用户会话信息存储在一个数据库中,而将缓存数据存储在另一个数据库中。

  2. 逻辑分区:通过使用不同的数据库,可以对数据进行逻辑分区,这有助于管理大型应用中的复杂数据结构。

  3. 权限管理:Redis可以为不同的数据库设置不同的访问权限,这样可以更精细地控制用户对数据的访问。

  4. 避免键名冲突:在多应用共享同一个Redis实例的情况下,使用不同的数据库可以避免不同应用之间的键名冲突。

  5. 简化数据迁移和备份:由于每个数据库是独立的,可以单独对某个数据库进行备份或迁移,而不影响其他数据库

  6. 提高性能:在某些情况下,将数据分散到不同的数据库可以减少单个数据库的负载,从而提高整体性能。

  7. 便于数据清理:可以定期清空某个数据库,而不影响其他数据库,这对于需要定期清理数据的应用来说非常有用。

  8. 多租户支持:在多租户环境中,每个租户可以使用独立的数据库,这样可以更好地隔离租户数据。

  9. 实验和开发:开发人员可以在不同的数据库中进行实验和开发,而不会影响到生产环境的数据。

  10. 节省资源:通过合理使用数据库,可以减少内存的使用,因为Redis的每个数据库都是独立存储的,可以根据需要只加载部分数据库

总的来说,Redis的库提供了一种灵活的方式来组织和隔离数据,使得Redis可以更好地服务于多种不同的应用场景。


一-5 Redis中的Key与Value是什么、如何进行操作使用它们

Redis的Key和Value是键值对存储系统的基本单元。Key是唯一标识符,Value是与Key关联的数据。操作Key和Value的命令包括:

  • SET <key> <value>:设置键值对。
  • GET <key>:获取键对应的值。
  • DEL <key>:删除键值对。
  • EXPIRE <key> <seconds>:设置键的过期时间。

添加

redis-cli
# 进入redis-cli后:
# 进入指定库中
select <库名>
# 为指定库添加新的键值对
set <Key名> <Value名>

查看

企业中谨慎使用key *

key *会从内存中加载所有缓存的数据,由于企业中的缓存的数据非常之多,一旦加载了,那么会使机器过载严重

正确查看方式
redis-cli
# 进入redis-cli后
# 进入指定库中
select <库名>
# 查看该库中的指定键的值是什么
get <Key名>

企业中谨慎使用flushdb以及flushall

在这里插入图片描述

删除以及设置过期时间

# 进入源码目录
redis-cli ...
#进入redis-cli模式后,指定库# 删除指定key1
del <key名># 为指定key设置过期时间
expire <key名> <有效存在时长>

一-6 Redis和其他数据缓存服务的对比

在这里插入图片描述

二、Redis的安装与基本配置

Redis官网



二-1 Redis源码安装

官网源码安装Redis教程

二-2 *源码安装中间件的一般流程

在Linux中源码安装中间件服务通常涉及以下基本步骤:

1. 准备工作

a. 安装编译工具

大多数源码包需要编译工具进行安装,最基本的工具包括gcc(GNU编译器集合)和make

sudo apt-get install build-essential      # Debian/Ubuntu
sudo yum groupinstall "Development Tools" # CentOS/RHEL
sudo dnf groupinstall "Development Tools"  # Fedora
b. 安装依赖库

根据中间件服务的要求,可能需要安装额外的依赖库。这些信息通常可以在服务的官方文档中找到。

sudo apt-get install lib依赖库-name      # Debian/Ubuntu
sudo yum install 依赖库-name            # CentOS/RHEL
sudo dnf install 依赖库-name            # Fedora

2. 下载源码

a. 下载源码包

可以从中间件服务的官方网站或者官方推荐的镜像站点下载源码包。

wget http://example.com/中间件服务-src.tar.gz
b. 解压源码包

下载完成后,需要解压源码包。

tar -zxvf 中间件服务-src.tar.gz

3. 配置

a. 进入源码目录

解压后,进入源码目录。

cd 中间件服务-src
b. 运行配置脚本

通常源码包会提供./configure脚本来检测系统环境并生成适合的Makefile

./configure

如果需要指定安装目录或其他特殊配置,可以在./configure命令后添加相应的参数。

4. 编译

a. 编译源码

使用make命令编译源码。

make
b. 编译安装

编译完成后,使用make install命令进行安装。

sudo make install

5. 配置服务

a. 配置服务环境

根据需要配置服务的环境变量、日志目录、数据目录等。

b. 配置服务参数

通常服务会有一个配置文件,需要根据实际需求进行配置。

nano /etc/中间件服务/中间件服务.conf

6. 启动服务

a. 启动中间件服务

使用服务的启动脚本启动中间件服务。

sudo systemctl start 中间件服务     # 如果系统使用systemd
sudo service 中间件服务 start      # 如果系统使用SysVinit
b. 设置服务自启动

如果需要,设置服务在系统启动时自动启动。

sudo systemctl enable 中间件服务     # 如果系统使用systemd
sudo chkconfig 中间件服务 on        # 如果系统使用SysVinit

7. 验证安装

a. 检查服务状态

检查中间件服务是否成功启动。

sudo systemctl status 中间件服务     # 如果系统使用systemd
sudo service 中间件服务 status      # 如果系统使用SysVinit
b. 测试服务功能

进行功能测试,确保中间件服务运行正常。

以上步骤是源码安装中间件服务的一般流程,具体步骤可能会根据中间件服务的不同而有所差异。在安装前,最好阅读服务的官方文档,以获取更详细的安装指南和注意事项。



redisserverrediscli_396">二-3 redis-server命令和redis-cli命令有是什么用、如何使用

redis-server是Redis服务器的启动程序,用于启动Redis实例。redis-cli是Redis命令行客户端,用于与Redis服务器进行交互。使用方法:

  • 启动Redis服务器:redis-server /path/to/redis.conf
  • 启动Redis客户端:redis-cli

具体有什么用

  1. redis-server

    • 数据存储:Redis是一个高性能的键值存储系统,可以用来存储各种类型的数据,如字符串、列表、集合、哈希等。
    • 缓存:Redis常用作数据库查询结果的缓存,减少数据库的访问次数,提高应用性能。
    • 消息队列:Redis支持发布/订阅模式,可以作为消息队列使用,用于处理异步任务或实现事件通知。
    • 会话管理:在Web应用中,Redis可以用来存储用户会话信息,实现会话管理。
  2. redis-cli

    • 数据操作:通过redis-cli可以执行各种Redis命令,如设置键值对、获取键值、删除键等。
    • 监控与调试redis-cli可以用来监控Redis服务器的状态,如内存使用情况、客户端连接数等,也可以用来调试Redis应用。
    • 自动化脚本redis-cli可以执行Lua脚本,实现复杂的数据处理逻辑。

如何使用

  1. 启动Redis服务器

    • 使用redis-server命令启动Redis服务,需要指定配置文件:
      redis-server /path/to/redis.conf
      
    • 如果没有指定配置文件,redis-server会使用默认配置启动。
  2. 使用Redis客户端

    • 启动Redis客户端:
      redis-cli
      
    • 连接到远程Redis服务器(可选):
      redis-cli -h host -p port -a password
      
      其中host是Redis服务器的地址,port是端口号(默认为6379),password是密码(如果有)。
  3. 执行Redis命令

    • redis-cli中,可以直接输入Redis命令来操作数据,例如:
      SET key value  # 设置键值对
      GET key        # 获取键的值
      DEL key        # 删除键
      
    • 也可以使用管道(pipe)来批量执行命令:
      redis-cli --pipe "SET key1 value1\nSET key2 value2"
      
    • 使用Lua脚本:
      redis-cli --eval script.lua key1 key2 ...
      
      其中script.lua是Lua脚本文件,key1 key2 ...是传递给脚本的键。

通过这些基本操作,你可以利用Redis进行数据存储、缓存、消息队列等多种应用场景。


"Lua脚本文件"指的是一个用Lua语言编写的文件,Lua是一种轻量级的脚本语言,常用于嵌入到应用程序中,提供灵活的扩展和自动化功能。在这个上下文中,Lua脚本文件被用来与Redis数据库交互,通过redis-cli --eval命令执行。这个命令允许用户执行一个预先编写好的Lua脚本,该脚本可以包含多个Redis命令,这样可以减少网络往返次数,提高效率,尤其是在需要执行一系列相关操作时。在这个例子中,script.lua就是指这个Lua脚本文件的名称,而key1 key2 ...是作为参数传递给Lua脚本的键。


Lua和Shell脚本语言是两种完全不同的脚本语言,它们在设计目的、使用场景、语法和功能上都有显著的区别:

  1. 设计目的和用途:

    • Lua: Lua是一种轻量级的、多用途的脚本语言,设计上注重简洁和效率。它被设计为嵌入到应用程序中,提供灵活的扩展和自动化功能。Lua常用于游戏开发、网络服务器、图形界面工具等领域。
    • Shell脚本: Shell脚本是一种为Unix和Linux操作系统的命令行界面编写的脚本语言,主要用于自动化操作系统级的任务,如文件操作、程序执行、文本处理等。
  2. 语法和结构:

    • Lua: Lua的语法类似于C语言,它有明确的语法结构,支持函数、模块、闭包等高级编程特性。Lua的代码结构清晰,易于阅读和维护。
    • Shell脚本: Shell脚本的语法依赖于特定的Shell环境(如Bash、Zsh等),它通常由一系列命令组成,这些命令可以直接在命令行中执行。Shell脚本的语法相对简单,但可读性和结构性不如Lua。
  3. 跨平台性:

    • Lua: Lua是跨平台的,可以在多种操作系统上运行,包括Windows、Linux和macOS。
    • Shell脚本: Shell脚本通常与特定的操作系统和Shell环境紧密相关,跨平台性较差。例如,Bash脚本在Linux上运行良好,但在Windows上可能需要额外的工具(如Cygwin或WSL)来运行。
  4. 性能:

    • Lua: Lua通常比Shell脚本执行得更快,因为它是编译型语言,可以直接编译成机器码或字节码运行。
    • Shell脚本: Shell脚本的执行速度通常较慢,因为它需要通过Shell解释器逐行解释执行。
  5. 功能和库:

    • Lua: Lua提供了丰富的标准库,支持文件操作、网络编程、数据结构等多种功能。此外,Lua社区提供了大量的第三方库,可以扩展Lua的功能。
    • Shell脚本: Shell脚本的功能受限于操作系统和Shell环境提供的命令和工具。虽然可以通过外部程序扩展功能,但不如Lua灵活。
  6. 错误处理和调试:

    • Lua: Lua提供了较为完善的错误处理机制和调试工具,适合开发复杂的应用程序。
    • Shell脚本: Shell脚本的错误处理和调试相对简单,主要依赖于命令的返回值和一些基本的调试技巧。

总的来说,Lua和Shell脚本语言各有优势和适用场景。Lua更适合需要复杂逻辑和高性能的应用程序,而Shell脚本更适合快速自动化操作系统级的任务。


在这里插入图片描述

在这里插入图片描述

redisserverrediscliredis_493">使用redis-serverredis-cli启动、关闭redis服务

redis_494">启动redis服务
# 后台运行
redis-server &
# 检测是否有redis端口
netstat -ntlup | grep redis

在这里插入图片描述

redis_503">关闭redis服务
redis-cli
# 进入redis-cli模式里,键入:
shutdown#或者
redis-cli shutdown

redis_514">二-4 redis的配置文件

cd redis源码目录
vim ./redis.conf

在这里插入图片描述

在这里插入图片描述

Redis库内查看所有配置、临时修改配置

在这里插入图片描述

redisredis_526">修改redis配置文件中的端口后启动、关闭如何通过指定端口的redis服务

启动
cd redis源码目录
# 启动指定已修改好的配置文件端的redis服务端并置于后台运行
redis-server ./redis.conf &
关闭
# 指定端口连接redis
redis-cli -p 指定端口
# 进入redis-cli后
shutdown#或
redis-cli -p 指定端口 shutdown

在这里插入图片描述
在这里插入图片描述

redis_547">redis守护进程模式的配置

这个模式可以自动将redis服务放于后台,就不用手动加“&”符号了

cd redis源码目录
vim ./redis.confdaemonize yes

在这里插入图片描述

# 使用redis daemon启动redis
cd redis源码目录
redis-server ./redis.conf

在这里插入图片描述

Redis的安全配置

Redis的保护模式protected-mode配置

Redis的protected-mode是一种安全模式,当Redis以默认配置启动且没有绑定到特定IP地址时,会自动启用。它防止Redis实例在未授权的情况下被外部访问。开启时,用于仅允许本地访问;要禁用protected-mode,可以在配置文件中设置protected-mode no。
在这里插入图片描述
这里的使用bind是设置指定redis的客户端(哪些可以访问我)

如何取消保护模式
cd redis源码目录
vim ./redis.conf

在这里插入图片描述


一定要注意bind后的IP地址是当前机器的IP

在Redis的配置文件redis.conf中,bind参数用于指定Redis服务器监听的网络接口的IP地址。正确配置bind参数对于控制哪些客户端可以连接到Redis服务器至关重要。以下是如何具体使用bind参数的说明:

基本用法

bind参数后面可以跟一个或多个IP地址,用空格分隔。Redis服务器将监听这些指定的IP地址上的端口。如果不指定bind参数,Redis将监听所有可用的网络接口。

示例

  1. 监听所有接口(默认行为):

    # 监听所有IPv4和IPv6地址
    bind 0.0.0.0 ::
    
  2. 监听特定的IPv4地址:

    # 只监听特定的IPv4地址
    bind 192.168.1.100
    
  3. 监听特定的IPv6地址:

    # 只监听特定的IPv6地址
    bind ::1
    
  4. 同时监听IPv4和IPv6的回环地址:

    # 监听IPv4和IPv6的回环地址
    bind 127.0.0.1 ::1
    
  5. 监听多个特定的IPv4地址:

    # 监听两个特定的IPv4地址
    bind 172.16.1.7 10.0.0.7
    
  6. 排除特定的地址:

    # 监听所有接口,但排除IPv6的回环地址
    bind * -::1
    

注意事项

  • 使用*代表监听所有IPv4地址,::代表监听所有IPv6地址。
  • bind参数中,每个IP地址前可以添加-来排除该地址。例如,bind 172.16.1.7 -10.0.0.7将监听172.16.1.7但不监听10.0.0.7
  • 如果你的Redis服务器直接暴露在互联网上,建议至少配置bind参数只监听回环地址(127.0.0.1::1),以增加安全性。
  • 确保指定的IP地址是分配给你的机器的有效地址,否则Redis将无法启动。
  • 如果你更改了bind参数,可能还需要调整protected-mode参数,因为它控制着在没有密码保护时Redis是否只接受来自本地的连接。

正确配置bind参数可以帮助你控制访问Redis的客户端,提高安全性,同时确保Redis服务的可用性。

bind 指令后面指定的 IP 地址是 Redis 服务器所在的主机的网络接口的 IP 地址。这些 IP 地址代表了服务器可以监听和接受来自哪些网络接口的连接。具体来说:

  1. 本地 IP 地址:如果你在 bind 指令后面指定了一个 IP 地址,那么 Redis 将只在该 IP 地址对应的网络接口上监听连接请求。这个 IP 地址必须是服务器主机上配置的 IP 地址之一。

  2. 外部 IP 地址:如果你希望 Redis 服务器能够接受来自特定外部 IP 地址的连接,你也可以在 bind 指令后面指定这些外部 IP 地址。这通常用于限制访问,只允许特定的机器或网络连接到 Redis 服务器。

  3. 特殊符号

    • *:代表监听所有 IPv4 地址。
    • :::代表监听所有 IPv6 地址。
    • 0.0.0.0:等同于 *,也代表监听所有 IPv4 地址。
    • ::0:等同于 ::,代表监听所有 IPv6 地址。

例如,如果你的服务器有多个网络接口,分别配置了不同的 IP 地址,如 192.168.1.10010.0.0.5172.16.0.1,你可以这样配置 bind 指令来指定 Redis 监听特定的网络接口:

bind 192.168.1.100 10.0.0.5

这样配置后,Redis 将只在 192.168.1.10010.0.0.5 这两个 IP 地址上监听连接请求,忽略其他网络接口。

总结来说,bind 指令后面指定的 IP 地址是 Redis 服务器所在主机的 IP 地址,用于控制 Redis 监听哪些网络接口的连接请求。


redisrediscliredis_664">客户端安装redis后使用redis-cli访问redis的服务器
redis-cli -h <Redis服务器的开放的IP> -p <Redis服务器开放的redis端口>

在这里插入图片描述

Redis的访问密码设置
服务端设置
# 进入到redis的源码目录中
vim ./redis.conf
# 添加以下配置信息:
requirepass <访问密码>

在这里插入图片描述

redisredisclirediscli_682">客户端访问测试(客户端得安装redis,然后使用redis-cli访问)(本地也是客户端,也能使用redis-cli)
# 进入redis-cli模式
redis-cli -h <Redis服务器开放的主机IP> -p <Redis服务器开放的Redis端口>
# 一些访问操作,只有先认证之后才能访问的
auth <Redis服务器设置的访问密码>

在这里插入图片描述


requirepass 是Redis配置文件中的一个参数,用于设置访问Redis服务器所需的密码。当这个参数被设置后,客户端在连接到Redis服务器时,必须先通过AUTH命令提供正确的密码,才能执行其他命令。否则,Redis将拒绝该连接的所有请求。

设置requirepass有什么用
  1. 提高安全性:通过设置requirepass,可以防止未经授权的访问,从而保护数据安全。
  2. 防止误操作:在开发或测试环境中,多个开发人员可能会连接到同一个Redis实例。设置密码可以防止误操作。
  3. 防止恶意攻击:在互联网环境中,攻击者可能会尝试使用各种手段入侵系统并获取敏感信息。通过设置requirepass,可以有效地阻止这类攻击,提高系统的安全性。
requirepass配置体现在哪

requirepass配置主要体现在以下几个方面:

  1. 配置文件:在Redis的配置文件(通常是redis.conf)中,可以通过设置requirepass来启用密码保护。
  2. 运行时配置:可以通过Redis命令行工具在运行时设置或修改密码。
  3. 客户端连接:客户端在连接Redis服务器时,必须先通过AUTH命令提供正确的密码。
如何使用requirepass
  1. 在配置文件中设置密码
    打开Redis的配置文件redis.conf,找到requirepass配置项,设置一个密码。例如:

    requirepass yourpassword
    

    保存文件并重启Redis服务器以使配置生效。

  2. 通过命令行设置密码
    可以在Redis命令行客户端中使用CONFIG SET命令来设置密码:

    127.0.0.1:6379> CONFIG SET requirepass "yourpassword"
    OK
    

    这将立即生效,但重启Redis后会失效,除非将配置写入配置文件。

  3. 客户端连接时使用密码
    在客户端连接Redis服务器时,需要使用AUTH命令进行身份验证:

    127.0.0.1:6379> AUTH "yourpassword"
    OK
    

    通过验证后,客户端可以正常执行其他Redis命令。

  4. 检查当前密码设置
    可以通过CONFIG GET requirepass命令查看当前的密码设置:

    127.0.0.1:6379> CONFIG GET requirepass
    1) "requirepass"
    2) "yourpassword"
    
  5. 清除密码
    如果需要清除密码保护,可以将requirepass设置为空字符串:

    127.0.0.1:6379> CONFIG SET requirepass ""
    OK
    

    这样,客户端连接Redis时将不再需要密码。

通过以上步骤,可以有效地使用requirepass配置来保护Redis服务器的安全。


Redis的日志配置

Redis的配置日志是指Redis服务器在运行过程中记录的日志信息,这些日志对于监控Redis的运行状态、排查故障和分析性能至关重要。以下是关于Redis配置日志的详细信息:

Redis的配置日志是Redis服务器在运行时生成的日志文件,它记录了服务器的各种操作和状态信息,包括错误信息、警告、命令执行情况等。这些日志对于运维人员来说非常重要,因为它们可以帮助了解Redis服务器的运行状况并进行故障排查。

Redis的日志配置有什么用
  1. 监控和故障排查:通过查看日志,可以监控Redis服务器的运行状态,及时发现并解决可能出现的问题。
  2. 性能分析:日志中记录的操作信息可以帮助分析Redis的性能,比如哪些命令执行频繁,是否存在性能瓶颈等。
  3. 安全审计:日志可以记录用户的访问和操作,有助于安全审计和合规性检查。
Redis的日志配置体现在哪

Redis的配置日志体现在配置文件redis.conf中,通过设置logfile参数来指定日志文件的路径和名称。例如,配置logfile /var/log/redis.log会将日志输出到/var/log/redis.log文件中。

如何进行Redis的日志配置
  1. 配置日志文件路径:在redis.conf配置文件中找到logfile配置项,将其设置为希望的日志文件路径。如果logfile设置为空字符串,则日志会输出到标准输出;如果是后台运行,则日志会被发送到/dev/null
  2. 设置日志级别:在redis.conf中还可以设置loglevel配置项,用于控制日志的详细程度。日志级别从低到高分别为:debug、verbose、notice、warning。可以根据需要设置合适的日志级别。
  3. 启动Redis服务器:配置完成后,使用配置文件启动Redis服务器。如果是后台运行,Redis会将日志信息输出到指定的日志文件中。
  4. 查看日志:通过查看配置的日志文件,可以获取Redis服务器的运行日志,进行分析和监控。

通过以上步骤,可以有效地使用和管理Redis的配置日志,以确保Redis服务器的稳定运行和便于问题排查。

在这里插入图片描述


http://www.ppmy.cn/ops/130046.html

相关文章

EnrichmentMap 该怎么用?方法和流程的建立过程

愿武艺晴小朋友一定得每天都开心 1&#xff09;首先在&#xff1a;g:Profiler – a web server for functional enrichment analysis and conversions of gene lists 的网站上输入Degs的基因列表。 具体步骤如下&#xff1a; 2&#xff09;准备富集出来的通路们&#xff08;…

鸿蒙网络编程系列38-Web组件文件下载示例

1. web组件文件下载能力简介 在本系列的第22篇文章&#xff0c;介绍了web组件的文件上传能力&#xff0c;同样的&#xff0c;web组件也具备文件下载能力&#xff0c;鸿蒙API提供了处理web组件下载事件的委托类型WebDownloadDelegate&#xff0c;该类型包括四个下载事件的回调接…

基于SpringBoot的酒店管理系统的设计与实现

摘要 酒店管理系统的设计旨在提供快捷高效的住宿资源管理方案&#xff0c;帮助管理员实现对酒店内房间、客户信息、订单的全方位管理&#xff0c;同时为用户提供便捷的预订和查询功能。本系统基于Spring Boot框架&#xff0c;结合前端框架和数据库设计&#xff0c;构建一个用户…

一家光伏企业终止,恐不具行业代表性,市占率仅为2.35%

海达光能终止原因如下&#xff1a;报告期内海达光能销售金额较所在行业第二名亚玛顿相差两倍以上&#xff0c;公司毛利率更是远低于行业龙头福莱特&#xff0c;恐难以说明公司行业代表性。在企业竞争上&#xff0c;公司2021年度的市场占有率约为2.35%&#xff0c;公司未来光伏玻…

【jvm】所有的线程都共享堆吗

目录 1. 说明 1. 说明 1.是的&#xff0c;JVM中所有的线程都共享堆内存。2.堆内存&#xff08;Heap&#xff09;是JVM管理的内存中最大的一块&#xff0c;用于存储对象实例和数组等动态分配的数据。3.它是Java内存管理中非常重要的一块区域&#xff0c;也是垃圾回收&#xff0…

Python中的数字类型:整数 (int)、浮点数 (float) 和复数 (complex)

Python 数字类型 Python 数字类型是一种基本的数据类型&#xff0c;用于表示和操作数值。Python 中主要有三种形式的数字&#xff1a;整数&#xff08;integers&#xff09;、浮点数&#xff08;floating-point numbers&#xff09;和复数&#xff08;complex numbers&#xf…

# C#中常见警告类型及处理方法全解

在C#开发过程中&#xff0c;常常会遇到各种各样的警告信息。这些警告虽然不一定会导致程序无法运行&#xff0c;但可能暗示着程序存在潜在的问题或不符合最佳实践。本文将结合多种常见情况&#xff0c;详细介绍如何处理C#中的一些典型警告&#xff0c;帮助开发者更好地理解和应…

PHP显示数据库中图片BLOB格式

<?php // 1. 连接到数据库并检索BLOB数据 $db new PDO("mysql:hostlocalhost;dbnamelogin", "root", "1234"); $query $db->query("SELECT p_binarydata FROM p_image WHERE pnid 141"); $result $query->fetch(PDO::FE…