1、来自Redis官方的描述:
Redis
The open-source, in-memory data store used by millions of developers as a cache, vector database, document database, streaming engine, and message broker.
通过阅读本文,我们知道:
redis 是一个被数百万开发人员用作缓存、矢量数据库、文档数据库、流媒体引擎和消息代理的开源内存数据存储。
2.常见数据类型的特点、用途和内部实现
string(字符串):普通字符串,最大存储量为512M。
▪应用场景:会话共享、分布式锁、计数器;
▪内部编码:int(8字节长整型);embstr(小于等于39字节字符串);raw(大于39个字节字符串)。
hash(哈希):散列结构,使用哈希函数来存取数据。
▪应用场景:缓存用户信息、保存电话号码等;
▪内部编码:ziplist(压缩列表)
、hashtable(哈希表)。
list(列表):按照插入顺序排序,可以有重复元素。
▪应用场景:消息队列,文章列表等;
▪内部编码:ziplist(压缩列表)、linkedlist(链表)。
set(集合):无序集合,没有重复元素。
▪应用场景:用户标签、随机数抽奖、在线人数统计等;
▪内部编码:intset(整数集合)
、hashtable(哈希表)。
sorted set/zset(有序集合):有序的字符串集合,同时元素不能重复。
▪应用场景:排行榜、用户点赞等;
▪底层内部编码:ziplist(压缩列表)
、skiplist(跳转表)。
3、面试题:
先来一道面试题:
1-1 Redis 处理数据的速度很快的原因是什么?
(1)redis的实现直接采用VM机制,有自己独特的底层模型、通信方式和应用协议。(黄婆卖瓜的)
(2)完全基于内存操作,处理速度非常快速。(回归正道)
(3)内部实现采用单线程来处理数据,避免了不必要的上下文切换和竞争条件,不存在多进程/线程而导致的CPU切换消耗问题 。(接近真理)
(4)使用多路 I/O 复用模型,非阻塞 IO操作。(来一个动作)
(5)数据结构简单,对数据操作也简单。(精彩时刻到了!收工!)