1.什么是Redis?
Redis是一个基于内存的 =高性能键值对数据库,通过定期把数据flush到硬盘实现持久化(异步),因为是内存操作,所以性能很高,另一个特点是支持保存多种数据类型(String,Hash,Set,Sorted Set,List).内存中之所以快是因为解决了IO读写的耗时问题。
2.Redis的主从与读写分离
Redis支持主从的模式,原则:主数据库会将数据同步到从库,而从库不会同步到主库,从库启动自动同步主库。可以通过主库插入,从库查询,可以减少单机的并发访问数量。通过增加从库数量,可以提高°的性能,为了避免主库的单点故障,集群一般采用双主库,所以整个集群的读写可用性非常高。缺陷在于,不管是主库还是从库,都有完整数据,如果数据量很大,集群扩展性受限于最小库的大小。
3.数据分片解决读写分离缺陷
可以将每个节点看成独立的master,然后通过业务实现数据分片,结合以上,可以将每个master设计成一个主库和多个从库组成。
4.Redis的好处
- 速度快,数据在内存中,查找和操作时间复杂度为O(1);
- 支持丰富数据类型。
- 支持事务,操作都是原子性,要么对数据的更改不执行,要么全部执行。
- 丰富的特性:可用于缓存,消息,按key过期设置过期时间,过期自动删除。
5.Redis使用场景
- 会话缓存(Session Cache)用Redis缓存会话比其他的优势在于:Redis提供持久化
- 全页缓存
- 队列,提供list和set操作,可以很好的作为消息队列平台来使用。
- 排行榜/计数器 Redis在内存中对数字进行递增或递减的操作实现的非常好。集合和有序集合也使得我们在执行这些操作时候变得非诚简单,Redis正好提供这两种数据结构。
- 发布和订阅