一、建立 Redis 的整体认知
《Redis 核心技术与实战》学习笔记
当提到 Redis 的时候,你的脑海中是否也会涌现出各种词语,比如“集群”“缓存”等。Redis 本身比较复杂,如果我们一上来就直接研究一个个具体的技术点,虽然可以直接学习到具体的内容,甚至立马就能解决一些小问题,但是这样学,很容易迷失在细枝末节里。更好的学习方式就是先建立对 Redis 的整体认知,对它的总体架构和关键模块有一个了解,知道各自的“用武之地”,然后再深入到具体的技术点,这样学习的效果才会更好。
Redis 中文网站地址http://www.redis.cn/
Redis 概述
Redis 是一个键值数据库,数据存储在内存中,拥有丰富的数据存储类型,具有高性能、高可靠、高可扩展的特点。
可以存储哪些数据
Redis 为 Value 提供了五种数据类型,分别是字符串 String、列表 List、哈希表 Hash、有序集合 Sorted Set 和集合。不同的数据类型,在底层的数据结构是有区别的,只有在了解了它们之间的区别,才能在实际业务场景中选择 value 类型和优化 Redis 性能做到游刃有余。
怎么访问存储的数据
Redis 通过网络框架以 Socket 通信的形式对外提供键值对操作,键值数据库网络框架接收到网络包,并按照相应的协议进行解析,知道真实请求意图,比如写入操作。
怎么定位到键值的位置
当 Redis 解析了客户端发来的请求,知道了要进行的键值对操作,此时,Redis 需要查找所要操作的键值对是否存在,这依赖于键值数据库的索引模块。索引的作用是让 Redis 根据 key 找到相应 value 的存储位置,进而执行操作。
操作逻辑
找到键值位置了,Redis 的操作模块针对不同的操作请求,实现对应的操作逻辑。
对于 GET 操作而言,此时根据 value 的存储位置返回 value 值即可;
对于 SET 一个新的键值对数据而言,需要为该键值对分配内存空间。
存储
对于键值的删除和写入,重启后快速提供服务,那就得靠 Redis 的存储模块提供支持了。
Redis 架构图
到这里,基本上对 Redis 有一个整体的认知,我这里整理一个 Redis 的内部架构图,这个不是 Redis 提供的真实的架构图,这只是便于个人学习记忆画的,你也可以根据自己的理解来画。
Redis 主要通过网络框架进行访问,这使得 Redis 可以作为一个基础性的网络服务进行访问,扩大了 Redis 的应用范围。
Redis 数据模型中的 value 类型很丰富,因此也带来了更多的操作接口,例如面向列表的 LPUSH/LPOP,面向集合的 SADD/SREM 等。
Redis 的持久化模块能支持两种方式:日志(AOF)和快照(RDB),这两种持久化方式具有不同的优劣势,影响到 Redis 的访问性能和可靠性。
Redis 支持高可靠集群和高可扩展集群
版权声明: 本文为 InfoQ 作者【鹿洺】的原创文章。
原文链接:【http://xie.infoq.cn/article/de848a027f18d0c582513df09】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论