Redis基本知识

一、Nosql概述:

1、为什么要用Nosql?

用户的个人信息、社交网络、地理位置、用户自己产生的数据,用户日志等等在爆发式增涨,这时候我们就需要使用NoSQL数据库,可以很好处理以上情况

2、 什么是NoSQL(not only sql)

泛指非关系型数据库,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代,尤其是超大规模的高并发社区。暴露出来很多难以克服的问题,NoSQL在当下大数据环境下发展十分迅速,Redis是发展最快的,而且是我们当下必须要掌握的一个技术。

很多的数据类型:用户的个人信息、社交网络、地理位置。这些数据类型的存储不需要一个固定的格式

3、NoSQL特点

①方便扩展(数据之间没有关系,很好扩展)

②大数据量高性能(redis一秒可以写8万次,读11万次,nosql的缓存记录集是一种细粒度的缓存,性能比较高)

③数据类型是多样的(不需要事先设计数据库,随取随用,如果是数据量十分大的表,很多人就无法设计了)

④传统RDBMS和NoSQL

传统的RDBMS:

结构化组织
sql
数据和关系都存在单独的表中
数据操作,数据定义语言
严格的一致性
基础的事物操作

NoSQL:

不仅仅是数据
没有固定的查询语言
键值对存储,列存储、文档存储、图形数据库
最终一致性
CAP定理和BASE
高性能,高可用、高可扩展性

二、阿里巴巴演进分析

1、商品的基本信息

名称、价格、商家信息:关系型数据库就可以解决(mysql、oracle)推荐文章:阿里云的这群疯子

2、商品的描述、评论(文字比较多)

文档型数据库中:mongdb

3、图片

分布式文件系统:FastDFS

4、商品的关键字(搜索)

搜索引擎:solr

5、商品热门的波段信息

内存数据库:redis、Tair

6、商品的交易、外部的支付接口

三方应用

思考:大型互联网应用问题:
数据类型太多了
数据源太多了,经常重构
数据要改造,大面积改造

三、NOSQL四大分类

1、KV键值对

redis

2、文档型数据库

mongdb(一般必须要掌握):

一个基于分布式文件存储的数据库,C++编写,主要用来处理大量的文档,是一个介于关系型数据库和非关系型数据库中中间产品,mongdb是非关系型数据库中功能最丰富,最像关系型数据库的

3、列存储数据库

分布式文件系统:FastFDS

4、图形关系数据库

graph
存放的不是图片,存放的是关系,比如:朋友圈社交网络,广告推荐

四、redis入门

1、redis是什么?

Remote Dictionary Server,远程字典服务

是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

免费何开源,是当下最热门的NoSQL技术之一,也被人们称之为结构化数据库。

2、redis能干嘛?

①内存存储、持久化,内存是断电即失,所以持久化很重要(rdb、aof)

②效率高、可以用于高速缓存

③发布订阅系统

④地图信息分析

⑤计时器、计数器

3、特性

支持多种数据类型

支持持久化

支持集群

支持事物

4、学习中需要用到的东西

①狂神的公众号:狂神说

②官网:https://redis.io/

③中文网:http://www.redis.cn/

④下载地址:通过官网下载即可(windows在github上下载)

⑤学习视频:https://www.bilibili.com/video/BV1S54y1R7SB?p=1

5、安装

windows安装:https://www.cnblogs.com/zhangguosheng1121/p/11153548.html

linux安装:https://www.cnblogs.com/zhangguosheng1121/p/11988497.html

6、redis基础知识

redis是单线程的:

redis是很快的,官方表示,redis是基于内存操作的,cpu不是redis性能瓶颈,redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了,所以就有了单线程

redis是c语言写的,官方提供的数据为100000+的QPS,完全不比同样是使用key-value的Memecache差

 思考:redis为什么单线程还真么快:

1、误区1:高性能的服务器一定是多线程的

2、误区2:多线程(cpu上下文切换)一定比单线程效率高

核心:redis是将所有的数据全部放在内存的,所以说使用单线程去操作效率就是高,多线程(cpu上下文切换:耗时的操作)
对于内存系统来说,如果没有上线文切换效率就是最高的。多次读写都是在一个cpu上的,在内存情况下,这个就是最佳的方案



原文地址:https://www.cnblogs.com/zhangguosheng1121/p/14892627.html