Redis前文

1.NoSql概述

1.DAL数据库访问层

网站的瓶颈:

1.数据量如果太大,一个机器放不下

2.数据索引,

3,访问量(读写混合),一个服务器承受不了

2.Memcached(缓存) + MySQL+垂直拆分(读写分离)

网站80%都在读,每次都要查询数据库,十分麻烦,所以可以提供缓存来提高访问效率。

发展过程:优化数据结构和索引==》》文件缓存(I/O)==》》Memcache(缓存)
在这里插入图片描述

3.分库分表+水平拆分+MySql集群

本质:数据库(读写)

MySAM: 表锁

iNNODB: 行锁

分库分表解决写的压力

在这里插入图片描述

4.时代的发展

MySQL如果存储较大的文件,博客,图片,数据库表会很大,效率就很低

用户的表如果更大,是很困难的,比如增加一列,就要增加n行

在这里插入图片描述

5.为什么要用NoSQL?什么是NoSQL?

用户个人信息,社交网络,地理位置。用户自己产生的数据、用户日志等等爆发式的增长

这时候可以使用NoSQL来解决这些情况。

NoSQL == Not Only SQL

关系型数据: 表格,行,列

非关系型数据:

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

6.NoSQL特点

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

2.大数据量高新能(Redis 一秒写8万次,读取11万次,NoSQL的缓存记录级,是一种细粒度的缓存,性能比较高)

3.数据类型式多样性的(不需要事先设计数据库!随取随用,如果数据量十分大,就无法设计了)

4.传统RDBMS和NoSQL

传统RDBMS:
--结构化组织
--SQL
--数据和关系都存在单独的表中
--操作,数据定义语言
--严格的一致性
--基础的事务
和NoSQL
NoSQL
--不仅仅是数据
--没有固定的查询语言
--键值对存储,列存储,文档存储,图形数据库(社交关系)
--最终一致性
--CAP定理和BASE(异地多活!)
--高性能,高可用,高可扩

大数据:

海量数据

多样化数据

实时性数据

高并发

高可扩

高性能

2.阿里巴巴演进分析

敏捷开发、极限编程

底层架构

在这里插入图片描述

数据存储

1.商品的基本信息
  名称、价格、商家信息
  关系型数据库就可以解决  MySQL
  
2.商品的描述、评论(文字比较多)
文档型数据库中,MongoDB

3.图片
--分布式文件系统  FastDfs
--淘宝  TFS
--Gooale的  GFS
--Hadoop  HDFS
--阿里云   oss

4.商品的关键字
--搜索引擎   solr  elasticsearch
--ISerach: 多隆

5.商品热门的破短信息
--内存数据库
--Redis   Tair、Menache..

6.商品的交易,外部的支付接口
--三方应用

中间层可以去差异化

大型互联网应用问题

–数据类型太多

–数据源繁多,经常重构

–数据要改造,大面积改造

缓存设计

在这里插入图片描述

3.NoSQL的四大分类

1.KV键值对

  • 新浪:Redis
  • 美团:Redis + Tair
  • 阿里、百度:Redis + memecache

2.文档型数据库(bson格式和json一样)

  • MongoDB

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

3.列存储数据库

  • HBase
  • 分布式文件系统

4.图关系型数据库

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

在这里插入图片描述

4.Redis入门

1.redis是什么?

(Remote Dictionary Server)远程字典服务

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

  • redis可以干什么?

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

2.效率高,可以用于高速缓存

3.发布订阅系统

4.地图信息分析

5.定时器、计数器(浏览器)

特性

1.多样化的数据类型

2.持久化

3.集群

4.事务

。。。。

学习中要用到的

redis-benchmark性能测试

在这里插入图片描述

测试

测试100个连接, 100000个请求
redis-benchmark -h localhost -p 6379 -c 100 -n 10000

2.基础知识

默认有16个数据库
select 数字     #可以切换数据库
DBSIZE     #查看数据库大小
keys *     #查看数据库所有的key
flushdb    #清空当前数据库数据
flushall    #清空所有数据库数据

默认有16个数据库

在这里插入图片描述

为什么redis端口号是6379?

是因为一个舞女名字缩写

redis是单线程的

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

redis是单线程为什么这么块?

redis是10万+的qps

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

2.误区:多线程(cpu上线文切换)一定比单线程快

对cpu>内存>硬盘的速度有一定的了解

核心:redis是将所有的数据都放在内存中,所以说使用单线程的操作效率是最快的。对于内存系统来说,如果没有上下文切换,效率就是最高的,这就是最佳的方案。

比如:单个cpu对单块内存进行读写,如果进行上下文切换,效率会降低

3.redis的基础命令:

作用:数据库、缓存、消息中间件

基础命令:

启动:在bin目录下:redis-server myconfig/redis.conf
关闭:shutdown       exit
设置: set name  zzzzz
查询keykeys *
查询某个key是否存在: exists  key
删除某个key: move key
设置某个key的过期时间: expire key 10 ##设置10s过期
查看某个key的剩余时间: ttl key
查看某个key的类型: type key
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值