第一章:Redis 安装与入门

目录

[1.1 初识Redis](#1.1 初识Redis)

[1.1.1 认识NoSQL](#1.1.1 认识NoSQL)

[1.2 Redis简介](#1.2 Redis简介)

[1.3 安装Redis(Linux-CentOS 7示例)](#1.3 安装Redis(Linux-CentOS 7示例))

[1.3.1 安装依赖](#1.3.1 安装依赖)

[1.3.2 上传安装包并解压编译](#1.3.2 上传安装包并解压编译)

[1.3.3 启动Redis](#1.3.3 启动Redis)

[1.4 Redis客户端](#1.4 Redis客户端)


Redis是一种基于内存的键值型NoSQL数据库,以key-value形式存储数据,支持多种数据结构。与传统关系型数据库相比,Redis具有非结构化、无关联、查询语法灵活、弱事务支持等特点,适用于高性能场景。它采用单线程模型(6.0+部分多线程),支持持久化、集群部署和多语言客户端。安装过程包括依赖安装、源码编译和配置启动,可通过命令行或图形界面连接。Redis默认提供16个数据库,支持密码认证和后台运行,适合作为高速缓存或消息中间件使用。

1.1 初识Redis

Redis是一种键值型NoSql数据库。

  • 键值型 :Redis中存储的数据都是以key-value对的形式存储,value可以是字符串、数值、甚至json等多种形式。
  • NoSql:非关系型数据库,区别于传统的关系型数据库(如MySQL)。

1.1.1 认识NoSQL

  1. 结构化 vs 非结构化

    • 关系型数据库 :结构化数据,有严格的表结构约束(字段名、类型、约束等)。

    • NoSQL数据库:形式自由,可以是键值型、文档型、图型等。

键值型:

文档型:

图型:

  1. 关联 vs 非关联

    • 关系型数据库 :通过外键等维护表与表之间的关联。

    • NoSQL数据库:通常无关联,数据关系通过业务逻辑或数据嵌套(耦合)来维护。

      • 补充说明:虽然可以在一个文档中嵌套其他数据(如上文订单例子),但这可能导致数据冗余和更新复杂。通常更推荐在业务代码中维护数据间的关系。
  2. 查询方式

    • 关系型数据库:使用标准的SQL语句。

    • NoSQL数据库:查询语法各异,没有统一标准。

  3. 事务

    • 关系型数据库:严格支持事务的ACID特性。

    • NoSQL数据库:大多不支持事务或仅支持弱一致性(BASE)。

  4. 总结对比

    |----------|-----------------------|------------------|
    | 特性 | 关系型数据库 | 非关系型数据库 |
    | 存储方式 | 基于磁盘,大量磁盘IO | 基于内存,操作速度快 |
    | 扩展性 | 一般通过主从复制(垂直扩展),水平扩展困难 | 易于水平拆分,支持海量数据存储 |
    | 数据结构 | 结构化(表) | 非结构化,灵活 |
    | 数据关联 | 通过外键关联 | 无关联,或通过代码、数据嵌套维护 |
    | 查询方式 | SQL | 各不相同 |
    | 事务 | 支持ACID | 通常不支持或弱支持 |

1.2 Redis简介

Redis(Remote Dictionary Server)诞生于2009年,是一个基于内存的键值型NoSQL数据库。
特征

  • 键值对存储,value支持多种数据结构。

  • 单线程(核心网络模型,6.0后部分功能支持多线程),命令具备原子性。

  • 低延迟、高速(基于内存、IO多路复用、优秀编码)。

  • 支持数据持久化(RDB、AOF)。

  • 支持主从集群、分片集群。

  • 支持多语言客户端。

1.3 安装Redis(Linux-CentOS 7示例)

1.3.1 安装依赖

复制代码
yum install -y gcc tcl

1.3.2 上传安装包并解压编译

假设安装包上传至 /usr/local/src

复制代码
tar -xzf redis-6.2.6.tar.gz
cd redis-6.2.6
make && make install

默认安装路径在 /usr/local/bin,其中包含:

  • redis-cli:命令行客户端

  • redis-server:服务端启动脚本

  • redis-sentinel:哨兵启动脚本

1.3.3 启动Redis

  1. 默认启动(前台)redis-server (不推荐,会阻塞终端)

  2. 指定配置启动(后台)

    • 备份配置文件:cp redis.conf redis.conf.bck

    • 修改 redis.conf 关键配置:

      复制代码
      bind 0.0.0.0        # 允许所有IP访问,生产环境需谨慎
      daemonize yes       # 后台运行
      requirepass 123321  # 设置密码
    • 其他常见配置:

      复制代码
      port 6379
      dir ./              # 数据持久化文件保存目录
      databases 1         # 数据库数量
      maxmemory 512mb     # 最大内存限制
      logfile "redis.log" # 日志文件
    • 启动:redis-server redis.conf

    • 停止:redis-cli -u 123321 shutdown

  3. 开机自启(systemd方式)

    • 创建服务文件 /etc/systemd/system/redis.service,内容如下:

      复制代码
      [Unit]
      Description=redis-server
      After=network.target
      
      [Service]
      Type=forking
      ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
      PrivateTmp=true
      
      [Install]
      WantedBy=multi-user.target
    • 重载服务并设置开机自启:

      复制代码
      systemctl daemon-reload
      systemctl start redis
      systemctl enable redis

1.4 Redis客户端

  1. 命令行客户端 redis-cli

    复制代码
    redis-cli -h 127.0.0.1 -p 6379 -a 密码# 连接
    ping # 测试连通性,返回 PONG 表示成功
  2. 图形化桌面客户端(如Redis Desktop Manager)

    • 下载安装后,新建连接,填写主机、端口、密码等信息。

    • Redis默认有16个数据库(编号0-15),可通过 select 0 命令切换。

相关推荐
WmStack5 分钟前
‘秒杀’功能实现
redis
无籽西瓜a23 分钟前
Docker 环境下 Redis Lua 脚本部署与执行
redis·docker·lua
疯狂成瘾者26 分钟前
Redis 实用学习清单
redis·学习
七夜zippoe28 分钟前
消息队列选型:Kafka vs RabbitMQ vs Redis 深度对比
redis·python·kafka·消息队列·rabbitmq
iMingzhen1 小时前
不想引入 Redis,我用一张 SQLite 表实现了消息队列
数据库·redis·ai·sqlite
Curvatureflight1 小时前
Redis实战:缓存设计与高频场景全解析
数据库·redis·缓存
我真会写代码1 小时前
从入门到精通:Redis实战指南,解锁高性能缓存核心能力
数据库·redis·缓存
小狗丹尼4003 小时前
JSON 基础认知、数据转换与 Flask 前后端交互全解
python·flask·json
haixingtianxinghai4 小时前
Redis的定期删除和惰性删除
数据库·redis·缓存
JavaGuide16 小时前
MiniMax M2.7 发布!Redis 故障排查 + 跨语言重构场景实测,表现如何?
redis·后端·ai·ai编程