Redis基础
业务中会遇到的问题:
- 数据量巨大
- 数据模式的不确定性
- 数据的频繁读
- 数据的频繁更改
- 大量数据的统计分析
集中数据库的特点
Redis简介:
- Redis(Remote Dictionary Server)是一个使用ANSI C语言编写的开源数据库
- 高性能的 key-value数据库
- 内存数据库,支持数据持久化
- 提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端
Redis数据类型:
Keys:非二进制安全的字符类型
Values:
string:最基本的数据类型,二进制安全的字符串,最大512M。
list:按照添加顺序保持顺序的字符串列表。
set:无序的字符串集合,不存在重复的元素。
sorted set:已排序的字符串集合。
hash:key-value对的一种集合。
bitmap:更细化的一种操作,以bit为单位。
hyperloglog:基于概率的数据结构。 # 2.8.9新增
Geo:地理位置信息储存起来, 并对这些信息进行操作 # 3.2新增
流(Stream):# 5.0新增
Redis的优点
- 操作简单。相比关系数据库在安装以及CRUD方面便捷。
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 strings, lists, hashes, sets 及 sorted sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行。
丰富的特性 – Redis还支持 publish/subscribe, 通知, 主从复制等特性。
Redis持久化操作
RDB(Redis DataBase):快照持久化,存储数据结果,关注点在数据
AOF(Append Only File):存储操作过程,关注点在数据的操作过程
CAP定理
一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
可用性(A):保证每个请求不管成功或者失败都有响应。
分区容忍性(P):系统中任意信息的丢失或失败不会影响系统的继续运作。
数据一致性:
- 强一致性(线性一致性):复制是同步的
- 弱一致性:复制是异步的。数据更新后,如果能容忍后续的访问只能访问到部分或者全部访问不到,则是弱一致性
- 最终一致性:不保证在任意时刻任意节点上的同一份数据都是相同的,但是随着时间的迁移,不同节点上的同一份数据总是在向趋同的方向变化。属于弱一致性