Redis总结

2021年4月25日 42点热度 0条评论 来源: 程铭程铭你快成名

最近针对Redis的基本数据结构、持久化机制、事务、主从复制和分布式锁等知识点做了系统的学习和整理,现对本次学习Redis的过程做一次思考和总结。

为什么要使用nosql(not only sql)

这个问题我们站在互联网技术中常提到的"高并发""高可用"关键词来思考这个问题,我是这样子理解的:

  • 传统的关系型数据库,比如单机的MySQL的QTS只有2000~3000左右,在一些大并发的场景下,比如618活动、双11活动等场景下,数据库根本就扛不住这么大的并发量,轻而易举的就将数据库打挂了,从而导致了服务不可用。
  • 每请求一次数据库可以看作是一次I/O,在大并发的场景下,频繁的I/O非常影响系统的性能。
  • 传统的关系型数据库存在扩展成本高、读写慢(速度肯定不会比直接在内存中取快)、容量有限等问题。
  • nosql具有高并发(直接内存操作)、高可用(主从、集群模式)、成本低和没有复杂的关系等优点。
  • Java或者Guava的map其实性能也很高,但是不能满足需求,因为生命周期随着JVM而结束。而且现在大部分项目都是分布式的,没法解决缓存的一致性的问题。

举个例子:用户第一次从数据库中读到数据之后缓存到redis中,然后第二次直接从redis中读取就会大大提高系统的性能。

当然nosql也存在一些缺点,比如不支持SQL语句查询、特性不够丰富等。

综上所述,nosql的出现更多的是为了解决数据量大,分布式中的问题,提高系统的高并发和高可用,为了数据吞吐量上的数量而对数据一致性打一点折扣

市面上常见nosql数据都有什么
  • 键值(Key-Value)存储数据库
    • 相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
    • 典型应用: 内容缓存,主要用于处理大量数据的高访问负载。
    • 数据模型: 一系列键值对
    • 优势: 快速查询
    • 劣势: 存储的数据缺少结构化
  • 列存储数据库
    • 相关产品:Cassandra, HBase, Riak
    • 典型应用:分布式的文件系统
    • 数据模型:以列簇式存储,将同一列数据存在一起
    • 优势:查找速度快,可扩展性强,更容易进行分布式扩展
    • 劣势:功能相对局限
  • 文档型数据库
    • 相关产品:CouchDB、MongoDB
    • 典型应用:Web应用(与Key-Value类似,Value是结构化的)
    • 数据模型: 一系列键值对
    • 优势:数据结构要求不严格
    • 劣势: 查询性能不高,而且缺乏统一的查询语法
  • 图形(Graph)数据库
    • 相关数据库:Neo4J、InfoGrid、Infinite Graph
    • 典型应用:社交网络
    • 数据模型:图结构
    • 优势:利用图结构相关算法
    • 劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案
redis都有哪些常见的应用场景
  • 最常用的功能就是缓存。直接从缓存查找数据,减少I/O,直接提高程序性能。
  • 分布式session共享的问题。
  • 分布式锁的实现(redisson)。
  • zset实现排行榜功能。
  • BitMap实现判断哪些用户登陆过系统的功能
  • 实现发布/订阅功能,不过基本不推荐这么使用,有成熟的MQ解决方案,比如rabbitMQ、kafka
redis核心知识点
    原文作者:程铭程铭你快成名
    原文地址: https://blog.csdn.net/wangchengming1/article/details/107083523
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。