第一章: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 命令切换。

相关推荐
晓13135 小时前
第二章:Redis常见命令与Java客户端
java·数据库·redis
填满你的记忆5 小时前
【从零开始——Redis 进化日志|Day7】双写一致性难题:数据库与缓存如何不再“打架”?(附 Canal/读写锁实战)
java·数据库·redis·缓存·面试
AI视觉网奇6 小时前
ue 5.5 c++ mqtt 订阅/发布 json
网络·c++·json
小冷coding6 小时前
【Java】以 Java + Redis + MySQL 为技术栈,模拟电商商品详情的读写场景,Cache Aside+ 延迟双删 方案
java·redis·mysql
爱敲代码的TOM6 小时前
详解布隆过滤器及其实战案例
redis·布隆过滤器
softshow10267 小时前
Redis 分布式锁必避问题及解决方案
数据库·redis·分布式
wWYy.7 小时前
详解redis(5):Gossiping 协议
数据库·redis·缓存
结衣结衣.7 小时前
Redis中的Hash哈希
数据库·redis·哈希算法
Script kid8 小时前
Redis(Remote Dictionary Server远程字典服务器)五种常见数据结构及常见用法和指令
服务器·数据结构·redis