高并发核心技术Redis系列(一)--------概述

目录

一、Redis概述

1 NoSQL介绍

1.1 NoSQL由来

1.2 什么是NoSQL

1.3 NoSQL的特点

1.4 NoSQL的四大分类

2 Redis概述

2.1 Redis是什么

2.2 Redis能干嘛

2.3 Redis特点


一、Redis概述


1 NoSQL介绍


    1.1 NoSQL由来

      任何技术的出现都是一步一步演进出来的。
          1. 在互联网诞生初期,一个网站一个应用访问量都不大, 使用单机Mysql数据库可以应对。

 

    2. 随着用户的不断增多,单机MySQL可能无法放下,服务器也可能承受不住一个网站,大多数的情况都是查询,为了减少数据库的压力,引入读写分离策略,让主数据库处理事务性增、改、删操作,而从数据库处理SELECT查询操作。
       通过读写分离的方式,解决问题。

       

 3. Mysql读的问题得到了缓解,写的压力依然存在,开始通过分库分表和MySQL集群来解决写的   问题。

 4. 当前,数据量越来越大、数据类型也越来越复杂,Mysql数据库在面对数据量很多、变化很大数
据,如大文本字段、图片等,MySQL效率就低了,并且扩展性差,大数据量场景下IO压力大,结
构更改困难。如果有一种数据库专门来存储此类数据,分担读取数据的压力,MySQL压力就会变得很小。
NoSQL数据库就应运而生,可以很好的解决上述问题。

 1.2 什么是NoSQL

   

NoSQL = Not Only SQL 不仅仅是SQL

泛指非关系型数据库,对应对比关系型数据库,NoSQL没有sql语句使用,不需要设计表结构,没有表关系。
很多数据类型如:用户的个人信息,社交网络,地理位置,这些数据类型的存储不需要一个固定的模式,类似于Map<String,Object>使用键值对来控制。

1.3 NoSQL的特点


1. 方便扩展(数据之间没有关系,很好扩展)
2. 大数据量高性能(Redis一秒写8万次,读取11万次,NoSQL缓存记录级,是一种细粒度的缓存,性能比较高)
3. 数据类型多样性(不需要事先设计数据库,如果是数据量特别大的表,设计繁琐)
4. 传统RDBMS 与 NoSQL

RDBMS:
 - 结构化数据
 - 结构化查询语句SQL
 - 数据和关系都存储在单独的表中
 - 数据操纵语言,数据定义语言
 - 严格的一致性
 - 基础事务
NoSQL:
 - 没有固定的查询语言
 - 键值对存储、列存储、文档存储、图关系数据库
 - 最终一致性
 - CAP定理和BASE理论
 - 高性能,高可用,高可扩

1.4 NoSQL的四大分类

    

分类  常见数据库 典型应用场景 优点 缺点
键值对
(key-
value)
Tokyo
Cabinet/Tyrant,
Redis,
Voldemort,
Oracle BDB
内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等
等。
查找速度快 数据无结构 化,通
常只被当作字符串
或者二进制数据
文档型
数据库
CouchDB,
MongoDB
Web应用(与Key-
Value类似,
Value是结构化
的,不同的是数据
库能够了解Value
的内容)
数据结构要求不
严格,表结构可
变,不需要像关
系型数据库一样
需要预先定义表
结构
功能相对局限
列存储
数据库
Cassandra,
HBase, Riak
分布式的文件系统 查找速度快,可
扩展性强,更容
易进行分布式扩
查询性能不高,而
且缺乏统一的查询
语法。
图形数
据库
Neo4J,
InfoGrid,
Infinite Graph
社交网络,推荐系
统等。专注于构建
关系图谱
利用图结构相关
算法。比如最短
路径寻址,N度
关系查找等
很多时候需要对整
个图做计算才能得
出需要的信息,而
且这种结构不太好
做分布式的集群方
案。

2 Redis概述

   2.1 Redis是什么


1. Redis(Remote Dictionary Server 远程字段服务)是一个开源的使用ANSI C语言编写、支持网
 络、内存亦可持久化的key-value数据库,并提供多种语言的API。


2. Redis是一个key-value存储系统,它支持存储的value类型相对更多,包括string、list、set、
 zset(sorted set --有序集合)和hash。这些数据结构都支持push/pop、add/remove及取交集并
集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的
排序。为了保证效率,数据都是缓存在内存中,Redis会周期性的把更新的数据写入磁盘或者把修
改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。


3. Redis提供了java、C/C++、PHP、JavaScript、Perl、Object-C、Python、Ruby、Erlang等客户端,使用很方便。


2.2 Redis能干嘛


1. 读写效率高,用于高速缓存
2. 发布,订阅消息(消息通知)
3. 地图信息分析
4. 活动排行榜或计数
5. …………


2.3 Redis特点


1. 多样的数据类型:Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,
hash等数据结构的存储。
2. Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使
用。
3. Redis的所有操作都是原子性的。
4. 支持主从复制及集群。

  

猜你喜欢

转载自blog.csdn.net/m0_58719994/article/details/121874388