菜鸟笔记
提升您的技术认知

Redis 的核心特点

一、Redis 的核心特点
  1. 基于内存(In-Memory)

    • 数据默认存储在内存中,读写速度极快(官方测试读速度可达 11 万次 / 秒,写速度可达 8 万次 / 秒)。
    • 缺点:内存空间有限,数据易失性(断电丢失),需通过持久化机制(RDB/AOF)保证数据可靠性。
  2. 丰富的数据结构
    Redis 支持多种数据结构,每种结构对应不同的应用场景:

    • 字符串(String):最简单的数据类型,用于存储单个值(如计数器、缓存用户信息)。
    • 哈希(Hash):键值对的集合,适合存储对象(如用户详情:user:1 {name: "Alice", age: 25})。
    • 列表(List):有序可重复的链表,支持两端插入 / 删除,用于消息队列(如任务队列)、最新列表(如朋友圈动态)。
    • 集合(Set):无序唯一的元素集合,用于去重(如统计用户唯一登录数)、交集 / 并集运算(如共同关注)。
    • 有序集合(Sorted Set):带分数的有序集合,用于排行榜(如按分数排序的用户排名)。
    • 其他:位图(Bitmap)、HyperLogLog(基数统计)、地理空间(Geospatial)等。
  3. 持久化机制

    • RDB(Redis Database):定时将内存数据快照写入磁盘,适合大规模数据的备份。
    • AOF(Append Only File):记录每一条写命令,重启时重新执行命令恢复数据,数据安全性更高。
    • 可同时开启 RDB 和 AOF,优先使用 AOF 恢复数据。
  4. 线程与高性能

    • Redis 基于单线程模型处理请求(基于非阻塞 I/O 多路复用技术),避免了多线程的上下文切换开销,性能卓越。
    • 单线程意味着 Redis 自身不会出现线程安全问题,但需注意多个客户端并发访问时的竞争条件(可通过事务或分布式锁解决)。
  5. 原生支持集群(Cluster)

    • 可通过分片(Sharding)将数据分布到多个节点,支持动态扩缩容,解决单节点内存限制和高并发问题。
    • 集群模式下自动实现数据分片和故障转移,保证高可用性。
  6. 其他功能

    • 发布订阅(Pub/Sub):实现消息传递,用于实时通信(如实时聊天、通知系统)。
    • 事务(Transaction):支持简单的事务操作,确保命令序列的原子性执行。
    • Lua 脚本:支持在服务端执行 Lua 脚本,减少客户端与服务端的交互次数。
    • 过期键(TTL):可为键设置过期时间,自动清理无效数据(如缓存的有效期)。