Redis 基础

"learning……"

Posted by Ryan on February 18, 2025

多点自知之明,少点自作多情。

Redis简介

Redis(Remote Dictionary Server)是一个开源的高性能键值对(key-value)数据库,通常用作缓存、消息队列和持久化数据存储系统。它基于内存进行操作,因此非常快速,并且提供了丰富的数据结构支持,如字符串、哈希、列表、集合、有序集合等,广泛应用于高并发、高性能场景中。

image

Ubuntu下Redis下载安装

1
2
3
sudo apt update                  //更新
sudo apt install redis-server    //安装redis
sudo systemctl status redis      //检查运行状态

连接Redis

用redis-cli命令连接,也可以使用redisinsight图形化工具使用redis

1
2
ryan@ubuntu:~$ redis-cli
127.0.0.1:6379> 

数据类型

支持以下数据类型:

  • 字符串:最基本的数据类型,支持多种操作。
  • 哈希:键值对集合,适合存储对象。
  • 列表:有序的字符串集合,支持从两端操作。
  • 集合:无序的唯一元素集合,支持集合操作。
  • 有序集合:带分数的有序集合,支持排名功能。
  • 位图:用于处理大规模的布尔数据。
  • HyperLogLog:高效估算唯一元素的数量。
  • 地理空间:存储和查询地理位置数据。
  • 流:用于处理实时数据流和事件。

Redis命令和基础操作

这个文档很重要,所有数据类型的操作都在这里

RedisCheatSheet-ByGeekHour.pdf

事务

Redis 支持事务操作,可以在一个事务中一次性执行多个命令,这些命令会被按顺序执行,且它们之间的执行是原子性的,事务中的所有命令要么都执行成功,要么都不执行。Redis 使用 MULTI、EXEC、WATCH 等命令来实现事务操作。

  • 如果在事务中某个命令发生错误,整个事务会被执行,但错误命令会返回错误信息。
  • Redis 不支持回滚机制,如果事务中某个命令失败,其余的命令依然会被执行。

Redis 持久化

redis是一个基于内存的数据库,如果没有持久化的话,断电或重启数据就没了。持久化就是为了解决这个问题。

Redis 提供了两种持久化机制,可以将内存中的数据保存到硬盘,以便在 Redis 重启后恢复数据。这两种持久化机制是 RDB(快照)和 AOF(追加文件),并且它们可以独立使用,也可以结合使用。

  1. RDB(Redis 数据库快照):RDB 持久化是通过定期生成数据的快照来保存数据的。Redis 会在指定的时间间隔内创建一个数据的二进制快照,并将快照保存到硬盘上的文件中。
  2. AOF(追加日志文件):AOF 持久化记录了所有写操作的日志,并将这些操作以追加的方式保存到磁盘。当 Redis 重启时,AOF 文件中的命令会被重新执行,以恢复数据。

主从复制

Redis 主从复制 是一种数据复制机制,使得一个 Redis 服务器(称为 主服务器 或 master)的数据可以同步到一个或多个 Redis 服务器(称为 从服务器 或 slave)。主从复制用于数据备份、负载均衡以及高可用性的构建。

哨兵模式

Redis 哨兵模式(Redis Sentinel)是 Redis 提供的一种高可用性解决方案,用于监控 Redis 集群中的主从复制结构,自动处理故障转移,并提供通知机制。它主要用于确保 Redis 在出现故障时能够自动恢复,避免单点故障。

Redis 哨兵模式的核心功能

  • 监控(Monitoring): 哨兵模式会持续监控 Redis 主服务器和从服务器的健康状态。如果主服务器发生故障,哨兵会检测到并采取后续措施。
  • 自动故障转移(Automatic Failover): 当哨兵检测到主服务器宕机时,它会自动将一个从服务器提升为新的主服务器,从而保持系统的高可用性。
  • 通知(Notification): 哨兵能够发送通知,告知管理员 Redis 集群中的事件(如主服务器宕机、故障转移等)。
  • 配置提供(Configuration Provider): 哨兵可以向客户端提供当前主服务器的地址。当主服务器发生故障并被替换时,客户端可以动态获取新的主服务器地址。