《Redis 101 : From a Beginners POV》
Redis远不止是缓存!它是一个“远程字典服务器”(Remote Dictionary Server),通过将数据全部存储在内存中,实现超高速读写,远快于传统数据库的磁盘I/O。为什么Redis这么快?三大秘诀:
1️⃣ 内存存储:内存访问延迟纳秒级,远快于SSD的微秒级。
2️⃣ 单线程命令执行:避免多线程锁、上下文切换,顺序执行更高效。
3️⃣ 高度优化的C语言代码和自定义数据结构,如简单动态字符串(SDS)、压缩列表等,节省CPU和内存。
为了支持成千上万的并发连接,Redis用单线程+事件驱动架构(I/O多路复用epoll/kqueue/IOCP),主线程只处理就绪事件,避免阻塞,保持高吞吐。
内存虽快但易失?Redis提供两种持久化机制:
- RDB快照:周期性生成数据快照,适合备份,恢复快,但可能丢失快照间的数据。
- AOF追加日志:记录所有写命令,重启时重放,提供更实时的持久化,可配置同步策略。
结合使用两者,保障数据安全又高效。
应用场景:
🔹 作为缓存层,减轻数据库压力,支持TTL自动过期,保证数据新鲜。
🔹 作为数据库,适合低延迟要求的实时应用,如游戏排行榜,利用sorted set快速查询排名。
内存管理方面,Redis采用自定义SDS结构,支持O(1)字符串长度读取,减少内存复制。动态编码策略根据数据大小自动切换编码(ziplist、intset、hashtable),极大节省内存开销。
Redis不仅快,而且设计巧妙,适用广泛。
详细内容👉 mrinalxdev.github.io/mrinalxblogs/blogs/redis.html