牛逼的人在干牛逼的事之前总有一段苦逼的岁月,只要像傻逼一样坚持,终究也会牛逼
众所周知redis为NoSQL非关系型数据库
NoSQL VS RDBMS即关系数据库管理系统(Relational Database Management System)
RDBMS
-高度组织化结构化数据
-结构化查询语言(SQL)
-数据操纵语言,数据定义语言
-严格的一致性
-基础事务
NoSQL
-代表着不仅仅是NoSQL
-没有声明性查询语言
-没有预定义的模式
--键-值对存储,列存储,文档存储,图形数据库
-最终一致性,非ACID属性
-非结构化和不可预知 的数据
-CAP定理(C:强一致性Consistency,A:可用性Availability,P:分区容错性Partition tolerance),只能三选二,不能三个都满足
-高性能,高可用性和可伸缩性
面试一般会问redis,当然你可能会说它是什么的,用来干什么,有什么用,用在什么应用场景等,说白了就是KV(键值对),Cache(缓存),Persistence(持久化)
现在来说说互联网时代的3V+3高
大数据的3V:海量Volume(如淘宝双11),多样Variety(文字,图片,音乐,文件等样式),实时Velocity(12306等都很难做到准实时)
互联网需求的3高:高并发、高可扩、高性能
步入正题:
redis是什么?能干嘛?怎么玩?
是什么?
redis:REmote DIctionary Server(远程字典服务器),是一个完全开源免费,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行,并支持持久化的NoSQL数据库,也被人们称为数据结构服务器
redis与其他key-value缓存产品有一下三个特点:
支持数据持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载使用
不仅仅支持key-value类型的数据,同时还提供list、set、zset、hash等数据结构的存储
支持数据备份,即master-slave模式数据备份
能干嘛?
内存存储和持久化:支持异步将内存数据写入硬盘,同时不影响继续服务
取最新N个数据的操作,如:将最新的的N条评论的ID放在redis的list集合里面
模拟类似HttpSession这种需要设定过期时间的功能
发布、订阅消息系统(ActivitiMq、RocketMq、Kafka等)
定时器,计数器
怎么玩?
数据类型、基本操作和配置
持久化和复制,RDB/AOF
事务的控制
复制
............
redis建议在linux下玩,90%的企业redis都是在linux下的。