京东技术面:Redis如何实现快速查询的高效性?
- 内容介绍
- 相关推荐
本文共计5897个文字,预计阅读时间需要24分钟。
为什么Redis查询速度那么快呢?
1.因为它是内存数据库;
2.归功于它的数据结构;
3.Redis中是单线程(引入了多线程,但核心内存读写仍为单线程);
4.
为什么 Redis 比较快
Redis 中的查询速度为什么那么快呢?
1、因为它是内存数据库;
2、归功于它的数据结构;
3、Redis 中是单线程(引入了多线程,但核心内存读写仍为单线程);
4、Redis 中使用了多路复用。
Redis 中的数据结构
这里借用一张来自《Redis核心技术与实战》 Redis 中数据结构和底层结构的对应图片
1、简单动态字符串
Redis 中并没有使用 C 中 char 来表示字符串,而是引入了 简单动态字符串(Simple Dynamic Strings,SDS)来存储字符串和整型数据。那么 SDS 对比传统的字符串有什么优点呢?
先来看下 SDS 的结构
struct sdshdr {// 记录 buf 数组中已使用字节的数量
// 等于 SDS 保存字符串的长度,不包含'\0'
long len;
// 记录buf数组中未使用字节的数量
long free;
// 字节数组,用于保存字符串
char buf[];
};
举个栗子:
使用 SDS 存储了一个字符串 hello,对应的 len 就是5,同时也申请了5个为未使用的空间,所以 free 就是5。
本文共计5897个文字,预计阅读时间需要24分钟。
为什么Redis查询速度那么快呢?
1.因为它是内存数据库;
2.归功于它的数据结构;
3.Redis中是单线程(引入了多线程,但核心内存读写仍为单线程);
4.
为什么 Redis 比较快
Redis 中的查询速度为什么那么快呢?
1、因为它是内存数据库;
2、归功于它的数据结构;
3、Redis 中是单线程(引入了多线程,但核心内存读写仍为单线程);
4、Redis 中使用了多路复用。
Redis 中的数据结构
这里借用一张来自《Redis核心技术与实战》 Redis 中数据结构和底层结构的对应图片
1、简单动态字符串
Redis 中并没有使用 C 中 char 来表示字符串,而是引入了 简单动态字符串(Simple Dynamic Strings,SDS)来存储字符串和整型数据。那么 SDS 对比传统的字符串有什么优点呢?
先来看下 SDS 的结构
struct sdshdr {// 记录 buf 数组中已使用字节的数量
// 等于 SDS 保存字符串的长度,不包含'\0'
long len;
// 记录buf数组中未使用字节的数量
long free;
// 字节数组,用于保存字符串
char buf[];
};
举个栗子:
使用 SDS 存储了一个字符串 hello,对应的 len 就是5,同时也申请了5个为未使用的空间,所以 free 就是5。

