基于内存实现
这点在一开始就提到过了,这里再简单说说。
Redis 是基于内存的数据库,那不可避免的就要与磁盘数据库做对比。对于磁盘数据库来说,是需要将数据读取到内存里的,这个过程会受到磁盘 I/O 的限制。
而对于内存数据库来说,本身数据就存在于内存里,也就没有了这方面的开销。
高效的数据结构
Redis 中有多种数据类型,每种数据类型的底层都由一种或多种数据结构来支持。正是因为有了这些数据结构,Redis
在存储与读取上的速度才不受阻碍。这些数据结构有什么特别的地方,各位看官接着往下看:
image
1、简单动态字符串
这个名词可能你不熟悉,换成 SDS 肯定就知道了。这是用来处理字符串的。了解 C 语言的都知道,它是有处理字符串方法的。而 Redis 就是 C
语言实现的,那为什么还要重复造轮子?我们从以下几点来看:
(1)字符串长度处理
image
这个图是字符串在 C 语言中的存储方式,想要获取 「Redis」的长度,需要从头开始遍历,直到遇到 '