一、Redis是什么?
Redis是一个开源的,c语言编写的,键值对存储的,高性能非关系型数据库。
Redis支持5种数据类型,包括String、Hash、set、zset和list;
Redis数据存储在内存中,因此读写性能高,理想情况下可以达到读110000/秒,写速度可以达到81000/秒,所以被广泛引用于缓存。
Redis支持事务,持久化,LUA脚本,LRU驱动事件,多种集群方案。
二、Redis优缺点?
1.优点:
- 读写性能快;
- 支持数据持久化,支持AOF和RDB两种持久化方式;
- 支持事务,Redis所有操作都是原子性操作;
- 数据结构丰富,除了String类型的value,还支持zset、set、list和hash;
- 支持主从复制,主机会自动将数据同步到从机,可以进行分离。
2.缺点:
- 数据库受到物理内存的限制,无法运作海量数据的高性能读写,因此Redis适用于较小数据量的高性能和操作;
- Redis不具备自动容错的恢复功能,主机从机宕机都会导致前端部分请求失败,需要等机器重启或手动切换IP才能恢复;
- 朱局当即,当几千部分部分数据未同步到从机,切换IP后会导师部分引用不一致,降低了系统的可用性;
- Redis较难支持在线扩容,在集群容量达到上限时在线扩容胡变得复杂。为避免这一问题,运维人员必须在上线时,必须留有足够空间,这会对资源造成很大浪费。
3.为什么要用Redis/缓存:
高并发、高性能
4.Redis为什么快:
- 完全基于内存,对数据的操作大都在内存中进行,非常快速;
- 数据结构简单,对数据操作也简单,Redis的数据结构是专门进行设计的;
- 采用单线程,避免的不必要的上下文交换和竞争条件,也不存在多线程和多线程导致的切换而消耗CPU,不用考虑锁的问题,不用考虑死锁;
- 使用多路IO复用模型,非阻塞IO;
- 使用底层模型不同,他们之间底层实现方式以及客户端之间的引用协议不一样,Redis直接构建了自己的VM机制。因为一般的系统调用和系统函数的话,会浪费一定时间去移动和请求。