Redis的笔记|豆包MarsCode AI刷题

13 阅读5分钟

Redis 学习笔记

1. 什么是 Redis

Redis 是Remote Dictionary Server(Redis) 的缩写,是一个使用 C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型的Key-Value数据库,并提供多种语言的API。

2. Redis 的特点

  • 高性能:Redis 能够在内存中进行快速读写操作,通常在每秒处理数十万次请求。
  • 持久化:支持 RDB 快照和 AOF(Append-Only File)持久化机制。
  • 丰富的数据结构:支持多种数据类型,适用于不同场景。
  • 原子操作:支持多种原子操作,保证数据一致性。
  • 主从复制:支持主从复制,提供高可用性和数据冗余。
  • 分布式:支持分片,可以在多台机器上分布数据。

3. 安装 Redis

3.1. 使用 Docker 安装

docker run --name redis -d -p 6379:6379 redis

3.2. 从源码安装

  1. 下载源代码:

    wget http://download.redis.io/redis-stable.tar.gz
    tar xzf redis-stable.tar.gz
    cd redis-stable
    
  2. 编译:

    make
    
  3. 启动 Redis 服务器:

    src/redis-server
    

4. 基本命令

4.1. 字符串

  • SET:设置一个字符串值
    SET key value
    
  • GET:获取字符串值
    GET key
    

4.2. 哈希

  • HSET:设置哈希表中的字段
    HSET hash_key field value
    
  • HGET:获取哈希表中的字段值
    HGET hash_key field
    

4.3. 列表

  • LPUSH:将元素推入列表的左侧
    LPUSH list_key value
    
  • LRANGE:获取列表中的元素
    LRANGE list_key start stop
    

4.4. 集合

  • SADD:向集合添加成员
    SADD set_key member
    
  • SMEMBERS:获取集合中的所有成员
    SMEMBERS set_key
    

4.5. 有序集合

  • ZADD:向有序集合添加成员
    ZADD sorted_set_key score member
    
  • ZRANGE:获取有序集合中的成员
    ZRANGE sorted_set_key start stop
    

5. 持久化

5.1. RDB 持久化

  • 定期将数据快照保存到磁盘,适合大多数场景。

5.2. AOF 持久化

  • 每次写操作都记录到文件中,恢复时更精确,但文件较大。

6. 高可用性

  • 主从复制:可以将数据从主节点复制到从节点,提供数据冗余。
  • 哨兵模式:监控 Redis 实例,自动故障转移。

7. Redis 集群

  • Redis 集群通过分片将数据分布在多个节点上,支持高可用性和扩展性。

8. 常用工具

  • redis-cli:Redis 的命令行工具,用于与 Redis 服务器交互。
  • Redis Desktop Manager:一个可视化管理工具,方便管理 Redis 数据。

9. 基础的总结

Redis 是一个功能强大的内存数据库,适合用于高性能的应用场景。通过学习基本命令和特性,可以有效地利用 Redis 来提升应用的性能和可用性。

10. Redis 数据类型详细介绍

10.1 字符串 (String)

  • 最大值:字符串的最大长度为 512 MB。
  • 常用命令
    • APPEND:将指定的值追加到已有字符串的末尾。
    • INCR:将存储在键中的数字值增加 1。

10.2 哈希 (Hash)

  • 特点:哈希是一个键值对集合,适合存储对象。
  • 最大值:每个哈希可以存储 2^32 - 1 个字段。
  • 常用命令
    • HDEL:删除哈希表中的一个或多个字段。
    • HGETALL:获取哈希表中的所有字段和值。

10.3 列表 (List)

  • 特点:列表是一个双向链表,可以存储重复元素。
  • 最大值:每个列表的最大长度为 2^32 - 1。
  • 常用命令
    • RPOP:移除并返回列表的最后一个元素。
    • LPOP:移除并返回列表的第一个元素。

10.4 集合 (Set)

  • 特点:集合是一个无序且不重复的元素集合。
  • 最大值:每个集合的最大长度为 2^32 - 1。
  • 常用命令
    • SREM:移除集合中的一个或多个成员。
    • SINTER:返回给定所有集合的交集。

10.5 有序集合 (Sorted Set)

  • 特点:有序集合是一个带有权重(score)的集合,元素按权重排序。
  • 最大值:每个有序集合的最大长度为 2^32 - 1。
  • 常用命令
    • ZREM:移除有序集合中的一个或多个成员。
    • ZRANK:返回成员在有序集合中的排名。

11. Redis 配置与优化

11.1 配置文件

  • Redis 的配置文件通常是 redis.conf,可以通过修改该文件来调整 Redis 的行为(如持久化、内存限制、网络设置等)。

11.2 性能优化

  • 内存管理:通过 maxmemory 设置 Redis 的最大内存使用量,结合 maxmemory-policy 选择合适的淘汰策略(如 LRU、LFU、TTL)。
  • 持久化设置:根据业务需求选择 RDB 或 AOF,或两者结合使用。

12. Redis 的应用场景

  • 缓存:通过将频繁访问的数据存储在 Redis 中,减少数据库的负载。
  • 会话存储:将用户会话信息存储在 Redis 中,实现快速访问。
  • 排行榜:使用有序集合实现实时排行榜功能。
  • 消息队列:利用列表实现简单的消息队列功能。

13. 常见问题与故障排除

  • 连接问题:检查防火墙设置,确保 Redis 端口(默认6379)开放。
  • 内存不足:使用 INFO memory 命令查看内存使用情况,调整 maxmemory 设置。
  • 数据丢失:确保持久化配置正确,定期备份数据。

14. 总结

Redis 是一个高效的内存数据存储解决方案,适用于多种场景。通过深入理解其数据结构和命令,可以在实际项目中充分发挥其优势。在使用 Redis 时,也要注意性能优化和数据持久化策略,以确保系统的稳定性和可靠性。