1.what(Redis是什么)
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
•Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
•Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
•Redis支持数据的备份,即master-slave模式的数据备份。
2.why(为什么要用redis,redis的使用场景)
首先要了解cap理论,那么首先什么是cap,C(强一致性),A(高可用),P(分区容错性)。
强一致性(consistency):
高可用 (avalibility):
分区容错性(partition tolerance):
CAP 之 3进2
在三个属性上,最多只能同时满足两条。
因此,将NoSql数据库分为满足CA原则,满足CP原则,满足AP原则
CA原则:单点集群,满足一致性,可用性的系统,通常在可扩展性上不强(传统的oracle,)
CP原则:满足一致性,分区容忍性的系统,通用性不是特别高()
AP原则:满足可用性,分区容忍性的系统,通常对一直性的要求不是特别高(Redis,MongoDB)(点赞数,浏览量 这种用户不太关心情况下,可以暂时有些误差,通过暂时牺牲这种准确性来保证高可用性)
一致性与可用性的的选择:
数据库一致性需求
在某些web实时系统并不要求严格的数据库事物,对于读一致性要求很低,有些场合对写一致性要求并不高。允许实现最终一致性。
数据库写实时性和读实时性需求
对于关系型数据库来讲,插入一条数据,然后再去查询,可定可以实时的读出来。但是对于实时性要求并不这么高的web应用,比如讲 我们在微信朋友圈发过消息之后,首先自己看到,过个几秒,几十秒别人才能看到。这是完全可以接受的。
对复杂的sql查询,特别是多表关联查询的需求
任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的报表查询,特别是SNS类型的网站,从需求以及产品设计角 度,就避免了这种情况的产生。往往更多的只是单表的主键查询, 以及单表的简单条件分页查询,SQL的功能被极大的弱化了
其次是BASE
BASE是由3个词组成
基本可用(Basically avalible)
软状态(Soft state)
最终一致性(Eventually consitent)
他的思想是通过系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上的改观。原因是 大型系统往往由于地域分布和极高性能的要求,不可能采用分布式事务来完成这些指标,要获得这些指标,我们必须采用另一种方式完成,BASE就是解决这个问题的方法