1.1 Redis介绍
Redis是一种基于键值对的NoSQL数据库,Redis中的值可以是由string(字符串)、hash(哈希)、list
(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLog、GEO(地理信息定位)等多种数据
结构和算法组成。
1.2 Redis特性
1 读写速度快
- 数据存放在内存中
- C语言实现,执行速度相对更快
- 单线程架构,预防了多线程可能产生的竞争问题
2 基于键值对的数据结构服务器
基于键值对的数据结构,Redis的值不仅可以是字符串,还可以是hash(哈希)、list(列表)、set
(集合)、zset(有序集合)、Bitmaps(位图)、HyperLog、GEO(地理信息定位)等多种数据结构
3 丰富的功能
- 键过期功能,可以用来实现缓存
- 发布订阅功能,可以用来实现消息系统
- Lua脚本功能,可以利用Lua创造出新的Redis命令
- 简单的事务功能,保证事务特性
- 提供流水线功能,客户端能将一批命令一次性传到Redis,减少网络开销
4 简单稳定
- 代码量小
- 单线程模型
- 不依赖操作系统中的类库,自己实现事件处理的相关功能
5 客服端语言多
Redis提供简单的TCP通信协议,很多编程语言可以很方便地接入到Redis。
6 持久化
通常情况下,将数据放在内存中是不安全地,一旦发生断电或者机器故障,重要的数据可能就会丢失,因此Redis提供了两种持久化方式:RDB和AOF,可以用两种策略将内存地数据保存到硬盘中。
7 主从复制
Redis提供复制功能,实现多个相同数据的Redis副本,复制功能是分布式Redis的基础。
8 高可用和分布式
高可用实现Redis Sentinel,能够保证节点的故障发现和故障自动转移。
分布式实现Redis Cluster,提供高可用、读写和容量的扩展性。
1.3 Redis使用场景
- 缓存
缓存机制可以加快数据的访问速度,能够降低后端数据源的压力。Redis提供了键值过期事件设置,提供了灵
活控制最大内存和内存溢出后的淘汰策略。
- 排行榜系统
Redis提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统。
- 计数器应用
在视频网站有播放数、电商网站有浏览数,为了保证数据的实时性,每一次播放和浏览都要做加1的操作,如果
并发量很大对于传统关系型数据的性能是一种挑战。
- 社交网络
赞/踩、粉丝,共同好友/喜好、推送、下拉刷新等是社交网站的必备功能。
- 消息队列系统
Redis提供了发布订阅和阻塞队列的功能。