Redis使用场景
- 缓存——热数据:配合关系型数据库做高速缓存
- 计数器:统计点击数等应用
- 队列
- 最新项目列表
- 排行榜,取TOP N操作
同类产品
网络IO模型 | 内存管理 | 数据一致性 | 存储 | |
---|---|---|---|---|
Redis | 单线程的IO复用模型 | 现场申请内存池的方式 | 提供了事务的功能,保证一串命令的原子性 | 除了Key-Value,还支持list, set, sorted set, hash数据结构 |
Memcached | 多线程,非阻塞IO复用的网络模型 | 预分配的内存池方式 | 提供了CAS命令 | 简单的Key-Value,不支持持久化和复制 |
大公司使用情况
- Airbnb
- Uber
- Twitter
支持的集合
string | 计数功能 |
hash | 存储对象 |
list | 简单的消息队列,或者分页 |
set | 全局去重 |
sorted set | Top N |
事务机制
- MULTI
- DISCARD
- EXEC
- WATCH
使用时注意
- rdb/aof Backup:不仅用作cache,而更为一种k-v存储,他完全替代了后端的存储服务(MySQL),所以备份是非常必要的
- Small item & Small instance:由于Redis单线程的模型,大的数据结构list, sorted set, hash set 的批量处理就意为着其他请求的等待,故使用Redis的复杂数据结构一定要控制其单key-struct的大小。
- Redis Sentinel:高可用
LUA支持
- Redis在 2.6版本开始就支持lua
- 为什么Redis需要LUA:为了性能以及事务的原子性