目录
简介
C语言开发的非关系型数据库
为什么拿它做缓存
高性能
从磁盘读,改到从内存读
高并发
扛得住
为什么不用map或guava?
缓存分本地和分布式
map和guava是本地缓存,轻量快速,生命周期同jvm,多实例每个实例各持一份缓存,缓存不一致
redis和memcached是分布式缓存,多实例共用一份缓存,能确保缓存一致性,缺点是架构较复杂
redis与memcached区别
redis线程模型
内部使用file event handler,该处理器为单线程,故redis为单线程
file event handler
组成
若干socket
io多路复用程序
文件事件分派器
事件处理器:连接应答处理器、命令请求处理器、命令回复处理器
原理
io多路复用程序监听多个socket,将其产生的事件放到队列中排队,事件分派器每次从中取一个事件,交给对应的事件处理器处理
redis常见数据结构
String
key-value
用于常规计数
Hash
hname-key-value
适合存储对象
List
双向链表
可用作关注列表、粉丝列表等
Set
类似list,可去重
Sorted Set(ZSet)
比set多了个权重参数score,集合元素按score排序
可用作实时排行榜
redis过期时间
通过设置expir