nosql数据类型
聚合模型:kv键值 bson 列
数据库的4大分类:
kv键值
bson:mongodb 介于关系数据库和非关系型数据库之间的产品
列存储数据库:HBase
图关系数据库:
ACID
Atomicity :
原子性,也就是说事务里的所有操作,要么全部做完要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务都失败,需要回滚。
Consistency:
一致性,数据库要一直处于一致的状态下,事务运行不改变数据库原本的一致性的约束
Isolation
独立性,事务之间不会相互影响,如果一个事务要访问的数据正在被另一个事务所修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。
Durability
一旦事务提交之后,所有的修改将会被永久保存。
nosql的 CAP原理
CAP:
Consistency 强一致
Availability 高可用性
Partition tolerance 分布式忍性(对于分布式系统,必选)
CAP的核心理论:一个分布式系统不可能同时满足C‘、A、P三个需求。最多只能同时较好的满足两个
因此,根据cap理论,nosql数据库分成了满足ca原则,cp原则和ap原则三大类:
ca:单点集群,oracle
cp:redis
ap:对于一致性要求低一些,大多数网站架构选择
分布式和集群
分布式:不同 的多台服务器上部署不同的服务模块,他们之间通过rpc/rmi之间通信和调用,对外提供服务和组内协作
集群: 不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问
redis概述
remote dictionary server (远程字典服务器)Remote
1.redis支持数据持久化,可以将内存的数据保存在磁盘,重启时候可以再次加载使用
2. redis支持更多的数据类型 kv ,list ,set,zset ,hash 等
3. redis支持数据备份,即master-slave模式的数据备份。
单进程开始的
默认有16个库去分片存储数据
常用的命令
- select 可以切换数据库 select 6 默认切到第5个库
- Dbsize 查看当前数据库的key数量
- keys * 查看所有key值
- FlushDb :清理所有数据,16个库的所有数据 Flush 清理当前库,FlushAll 清理所有库
- EXPIRE k1 10 设置k1的过期时间 为10s
- ttl key 查看还有多少秒过期,-1表示永不过期,-2 表示已过期
- type key 查看key是什么类型
redis的基本数据类型
五大数据类型
redis字符串 string:string类型是二进制安全的,意思是可以包含任何数据,比如jpg图片或者序列化对象
redis列表list :
redis集合 set: string类型的无序集合,通过hashTable实现的
redis哈希 hash:类似java里面的Map<String,Object>
redis有序集合zset
哪里去获取reids常见数据类型的操作命令?http://redisdoc.com/
Redis的String类型(单值单value)
常用操作:
Redis的List类型(单值单value)
- lpush/rpush/irange
Lpush 正进反出
Rpush 正进正出
- lpop/rpop 取出栈顶元素,取完就不存在栈中
性能总结:
- 它是一个字符串链表,left,right都可以插入添加
- 如果键不存在,创建新链表
- 如果已存在,添加新内容
- 如果值全移除,对应键消失
- 链表的操作无论是头或者尾效率都极高,但假如是对中间元素进行操作,效率就没那么好。
Redis的Set类型(单值单value)
数学集合类的操作 sdiff 、sinter,sunion
Redis的Hash类型(单值单value)
KV模式不变,但V是个键值对
比如 hset user id 11 后 hget的结果 hget user id 结果为11
Redis的zset类型(单值单value)
在set基础上,加一个score值。之前set是k1 v1 v2 v3 ,现在zset是 k1 score1 v1 score2 v2 来进行排序
示例: