Redis学习笔记
Redis的作用
- 易扩展:NoSQL数据库种类繁多,而且一个共同的特点就是去掉关系型数据库的关系型特性,数据之间无关系,就非常容易扩展,在架构层面上提高了扩展性。
- 大数据量高性能:具有非常高的性能,尤其在大数据下,表现同样优秀,得益于它的无关系性,数据库的结构简单。一般MySQL使用Query Cache每次表的更新就失效,是一种大力度的cache,针对web2.0的交互频繁使用,Cache的性能不高,而NoSQL的cache是记录级 的,是一种细粒度的cache。
- 多样灵活的数据模型:NoSQL无须为存储的数据建立字段,随时可以存储自定义的数据格式,而在关系型数据库中,增删字段非常麻烦,大量数据的表,增加字段是一个噩梦。
传统Rdbms vs Nosql:
传统RDBMS:高度组织化结构化数据,结构化查询语言(SQL),数据和关系都存储在具体的表中,数据操纵语言-数据定义语言,严格的一致性,事务
NoSQL:代表不仅仅是SQL,没有声明性查询语言,没有预定义的模式,键值对存储、列存储、文档存储、图形库存储,最终一致性而非acid属性,非结构化和不可预知的数据,cap原理,高性能、高可用和伸缩性
Redis,Mongdb,MemoryCache
NoSQL数据模型:聚合模式(KV键值,Bson-类似于json串的数据表达,列族,图形)
NoSQL数据库四大模型:
KV键值:美团(Redis + tair),阿里百度(Redis + memcache)
文档型数据库:bson格式较多 Mangdb
列存储数据库:HBASE,
图关系数据库:朋友圈社交网络,广告推荐系统
CAP原理:
传统的acid:原子性,一致性,独立性,持久性
CAP:Consistency(强一致性),Availablity(可用性),Partition tolerance(分区容错性)
CAP的三进二:一个分布式不可能同时满足CAP,因此根据CAP原理将NoSQL数据库分为CA原则,CP原则和AP原则
CA:单点集群,满足一致性,可用性的原则,通常在可扩展性上不太强大----传统Oracle数据库
CP:满足一致性,分区容忍必的系统,通常对性能要求不是很高----------------Redis,MongDB
AP:满足可用性,分区容忍性的系统,通常可能对一致性要求低一些----------大多数网站架构下的选择
BASE原理:基本可用(Basically Available),软状态(Soft state),最终一致性(Eventualy consistent)
分布式:不同的服务器上部署不同的服务模块
集群:不同服务器上部署相同的服务模块
Redis远程字典服务器:是一个用C语言编写,免费开源的,遵守BSD协议。高性能的分布式内存数据库,基于内存运行,也支持持久化的NoSQL数据库,
三个特点:
- 支持数据的持久化:可将内存中的数据保存在磁盘中,重启的时候再次加载使用
- 不仅支持简单的KV结构的存储,还支持list,set,zset,hash等结构的存储
- 支持数据的备份,即master-slave模式的数据备份
使用:
- 内存存储和持久化
- 取最新N个数据
- 发布订阅消息系统
- 定时器,计数器
Redis五大数据类型
- string:最基本的类型,和memcache同样实现;是二进制安全的,意思是string可以包含任何数据,图片或者序列化的对象;一个Redis字符串value最大为512MB
- hash:类似于java里面的map<string, Object>
- set:string类型的无序集合,通过hashtable实现
- zset:不允许重复的成员的set,不同元素都会关联一个double的分数;Redis通过分数为集合中的成员从小到大排序,分数可以重复;
- list:底层用链表
Redis开发命令开发大全: