2020-01-15 redis

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区别(面试题)

image.png

支持类型: 表存储 string/list/map/set/...map

相同点: memcache和redis都是key-value非关系型数据
redis它是key-value型的非关系型数据库 主要做缓存

redis的使用场景

  • redis使用最多的地方就是缓存 --内存最多
  • 可以处理大数据量的计数问题-- 微博转发 点赞
  • 实时的攻防系统
    银行登录(密码错误次数过多 锁定账号) 防止穷举法暴力破解
  • 有效期应用--优惠券
  • 自动去重应用--set
  • 队列的结构(FIFO)list存储 -->消息队列(RabbitMQ)地铁
  • 消息订阅和发布

redis的使用

  • String操作
    image.png
  • key操作
    image.png
  • list操作
    image.png
  • set操作
    image.png
  • hash操作
    image.png

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:禁止淘汰数据

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容