笔记内容源于读书《Redis开发与运维》
What
Redis 是什么?
- 基于键值对(key-value)的NoSQL数据库
值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种结构和算法组成。
Attribute
-
速度快
-
所有数据放内存
-
基于C语言实现,执行速度相对更快
-
使用单线程架构,预防多线程可能产生的竞争问题
-
源码精打细磨,性能和优雅于一身的开源代码
-
基于键值对的数据结构服务器
-
丰富的功能
-
提供键过期功能,可以用来实现缓存
-
发布订阅功能,可以用来实现消息系统
-
支持Lua脚本功能,可以利用Lua创造出新的Reids命令
-
提供了简单的事务功能,能在一定程度上保证事务特性。
-
提供了流水线(Pipeline)功能,将一批命令一次性传到Redis,减少了网络的开销。
-
简单稳定
-
早期只有2万行代码,3.0后增至5万行。
-
客户端语言多
-
持久化
-
RDB 和 AOF
-
主从复制
-
高可用和分布式
-
2.8以前是Redis Sentinel,能够保证Redis节点故障的发现和故障自动转移
-
3.0 Redis Cluster,真正分布式实现,提供了高可用、读写和容量的扩展性。
Use Case
- 可以做什么
- 缓存
键值过期时间设置,提供灵活控制最大内存和内存溢出的淘汰策略。
- 排行榜系统
提供列表和有序集合数据结构,可以用于构建各种排行榜。
- 计数器应用
天然支持计数功能而且计数功能非常好。
- 社交网络
赞/踩、粉丝、共同好友/喜好、等利用数据结构来实现。
- 消息队列系统
提供了发布订阅功能和阻塞队列,满足一般的消息队列功能。
- 不可以做什么
- 数据规模和数据冷热两个角度分析
- Redis基于内存存放,不适合存储大数据
- Redis不适合存放冷数据
How to Learn
- 不能黑盒应用,开发与运维同样重要(以下是错误示范)
- 在上千万个键的Redis上执行 keys*(不了解单线程模型)
- 在一个写操作量很大的Redis上配置自动保存RDB(不了解持久化原理)
- 阅读源码
网友评论