Redis 数据类型和单线程模型补充
一、五种主要数据类型
对于 key 只有一种数据类型就是 string
对于 value 有五种常见的数据类型 string, hash, list, set, zset
二、编码方式
在 Redis 中不能用字面意思来理解数据类型,为了保证操作的快,每种数据类型都会有不同的优化策略,导致编码方式并不是传统的数据类型组织形式。
数据类型 | 内部编码方式 |
string | raw 基本字符串 int 存储整数 emstr 短字符串存储优化 |
hash | hashtable 基本哈希表 ziplist 存储元素少会用压缩列表节省空间 |
list | linkedlist 链表 ziplist |
set | hashtable intset 存储的都是整数 |
zset | skiplist 跳表 ziplist |
三、单线程模型补充
Redis 在处理请求的时候是单线程,因为 Redis 的每次操作保证了短平快。
单线程处理请求也保证了每一个命令都是串行执行,省去多线程竞争开销。
但是 Redis 用多线程处理网络 IO,用到的技术是 IO 多路复用。
Redis 为什么快?
首先对比于数据库那肯定是快的。
1、Redis 访问内存比访问硬盘快。
2、核心功能短平快,进而处理请求用单线程,省去多线程竞争开销。
3、网络 IO 用到 epoll 多路复用。