NoSQL
NoSQL是对不同于传统的关系数据库的数据库管理系统的统称。
两者存在许多显著的不同点,其中最重要的是NoSQL不使用SQL作为查询语言。其数据存储可以不需要固定的表格模式,也经常会避免使用SQL的JOIN操作,一般有水平可扩展性的特征。
特点
当代典型的关系数据库在一些数据敏感的应用中表现了糟糕的性能,例如为巨量文档创建索引、高流量网站的网页服务,以及发送流式媒体[5]。关系型数据库的典型实现主要被调整用于执行规模小而读写频繁,或者大批量极少写访问的事务。
NoSQL的结构通常提供弱一致性的保证,如最终一致性,或交易仅限于单个的数据项。不过,有些系统,提供完整的ACID保证在某些情况下,增加了补充中间件层(例如:CloudTPS)[6]。有两个成熟的系统有提供快照隔离的列存储:像是Google基于过滤器系统的BigTable[7],和滑铁卢大学开发的HBase[8]。这些系统,自主开发,使用类似的概念来实现多行(multi-row)分布式ACID交易的快照隔离(snapshot isolation)保证为基础列存储,无需额外的数据管理开销,中间件系统部署或维护,减少了中间件层。
少数NoSQL系统部署了分布式结构,通常使用分布式散列表(DHT)将数据以冗余方式保存在多台服务器上。依此,扩充系统时候添加服务器更容易,并且扩大了对服务器失效的承受能程度。
redis的认识
- 数据存储内存 速度毕竟快
- 支持类型比较多
1.string
2.list
3.set
4.zset(sorted set 有序集合 api)
5.hash - 支持磁盘存储 完成持久化操作(aof rdb)
- 支持数据的过期 (设置过期时间 expire)
- 支持集群操作
- 支持订阅和发布(基本用MQ)
Redis和Memcache区别(面试题)
支持类型: 表存储 string/list/map/set/...map
相同点: memcache和redis都是key-value非关系型数据
redis它是key-value型的非关系型数据库 主要做缓存
redis的使用场景
- redis使用最多的地方就是缓存 --内存最多
- 可以处理大数据量的计数问题-- 微博转发 点赞
- 实时的攻防系统
银行登录(密码错误次数过多 锁定账号) 防止穷举法暴力破解 - 有效期应用--优惠券
- 自动去重应用--set
- 队列的结构(FIFO)list存储 -->消息队列(RabbitMQ)地铁
- 消息订阅和发布
redis的使用
-
String操作
-
key操作
-
list操作
-
set操作
-
hash操作
redis 持久化
为什么需要持久化
防止数据丢失
怎么持久化
- 磁盘存储
- 内存磁盘
redis如果要实现磁盘存储两种方案
rdb方式
在一个时间点内,保存一个数据的快照
save 1 1 -->1s之内至少有一个变化的时候 做持久化
缺点:1s之内的数据 丢失 不能做持久化aof方式
追加执行的配置文件的方式
保存到redis里面的数据永久存在的吗?(淘汰策略)
不是
可以设置过期时间,到过期时间之后,会淘汰数据
达到内存最大值,也会淘汰
淘汰数据,怎么去淘汰(10000数据 淘汰)
淘汰策略
- lru(最近最少使用)
- ttl(即将过期的数据)
- random(随机淘汰)
volatile-lur:从已设置过期的数据集中挑选最近使用最少的淘汰
volatile-ttr:从已设置过期的数据集中挑选要过期的数据淘汰
volatile-random:从已设置过期的数据集中任意挑选数据淘汰
allkeys-lru:从数据集中挑选最近最少使用的数据淘汰
allkeys-random:从数据集中任意挑选数据淘汰
noenviction:禁止淘汰数据