什么是NoSQL

为什么要用NoSQL

1.单机数据库时代

  1. 90年代,网站访问量小,单个数据库可以顶住当时的访问量
  2. 使用静态网页,服务器压力不会太大

缺点:

  1. 数据量太大,一台机器放不下
  2. 数据量到达300w以上需要建立MySQL索引,B+树
  3. 当时数据库读写一体,服务器承受不了

2.Memcached(缓存)+MySQL+垂直拆分(读写分离)
网站再大部分情况下都是在读,当用户按下按钮,就会对数据库发送一个查询请求,多个用户发送相同的请求,请求每次都要查询数据库,非常耗费性能,为减轻数据库压力,使用缓存

发展过程:优化MySql结构和索引—>文件缓存—>

分库分表+水平拆分+MySQL集群

本质都是解决数据库读写问题

缓存(读)+MySql(写)

以MySQL的存储引擎为例

  • MyISAM:支持表锁,不支持事务的ACID,影响操作,高并发会出现严重的锁问题
  • InnoDB:支持行锁+表锁,支持事务的ACID

由于数据量增大,使用分库分表解决写压力,当时数据库还推出表分区的概念

非关系型数据库:Redis,MongoDB

为什么要用Nosql

个人信息,社交网络,地理位置,用户产生的信息数据,关系型数据库已经承载不了,需要NoSQL

NoSQL简介

什么是NoSQL

NoSQL翻译为Not Only SQL,意思是非关系型数据库

用户的个人信息,社交网络,地理位置等数据的存储不需要一个固定的格式,使用Redis,它是使用类似于Map<String,Object>来实现存储,键值对的形式存储

NoSQL特点

  1. 方便扩展(数据之间没有联系)

  2. 大数据量高性能,Redis可以支持8w/s的写操作,11w/s的读操作

  3. 数据类型多样,不需要设计数据库,随用随取

  4. 传统关系型数据库Nosql的区别

    传统的关系型数据库

    1.结构化
    2.数据和结构存在于单独的表中行+列
    3.严格一致性
    4.基础的事务
    

    Nosql

    1.没有固定的查询语言
    2.键值对存储,列存储,文档存储,图形数据库
    3.最终一致性
    

了解3V+3高

大数据时代的3V :主要是描述问题的

1.海量Velume

2.多样Variety

3.实时Velocity

大数据时代的3高 : 主要是对程序的要求

1.高并发

2.高可扩

3.高性能

淘宝商品信息
名称,价格,商家信息,存储在MySql中
商品评论,描述,存在Redis / MongoDB中
商品图片,存在分布式文件系统FastDFS
商品关键字,Isearch
商品热门波段信息,内存数据库,redis
商品交易,外部的支付接口,调用第三方接口

大型互联网应用问题:

  • 数据类型太多
  • 数据源多

NoSql四大类型

KV键值对:

  • 新浪:Redis
  • 美团:Redis+Tair
  • 阿里,百度:Redis+Memcache

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

  • MongoDB

MongoDB是基于分布式文件存储的数据库
处理大量的文档
MongoDB处于关系型和非关系型之间
MongoDB是Nosql,既像关系型也像非关系型

列存储的数据库

HBase
分布式文件系统

图关系数据库

存放关系,例如:社交网络,广告推荐

Redis入门

概述

Redis是什么?

Redis(Remote Dictionary Server ),即远程字典服务
是一个开源的key-value数据库,由C语言编写,K-V键值对数据库
免费和开源

Redis能干嘛?

  1. 内存存储,持久化,内存中断电即失,持久化!!(RDB,AOF)
  2. 效率高,可用于高速缓存
  3. 发布,订阅系统
  4. 地图信息分析
  5. 计数器,(微信微博浏览量)

Redis特性

  1. 多种数据类型
  2. 持久化
  3. 集群
  4. 事务

需要用到的东西

Redis官网
Redis推荐在Linux上面搭建开发

Windows下载安装

  1. 官网下载压缩包
  2. 解压到环境目录就行,Redis很小(5MB)
  3. 开启Redis,运行服务器:redis-server.exe
  4. 使用redis客户端来连接redis服务器

Linux下载安装

电脑还未安装Linux操作系统,这部分略

性能测试

redis-benchmark是一个官方自带的性能测试工具
redis-benchmark+命令参数

基础知识

redis默认有16个数据库

可以使用select切换数据库

查看当前数据库大小

查看所有的key

清空当前redis数据库命令

清除全部数据库命令

查看key是否存在

删除当前数据库的指定key-value

设置key-value的过期时间

查看key的数据类型

思考:为什么Redis端口号是6379!
女明星MERZ的名称缩写手机按键

Redis是单线程

  1. Redis是速度快,是基于内存操作的,CPU不是Redis性能瓶颈,Redis只和内存和网络带宽有关
  2. Redis是10W+的QPS

Redis为什么单线程还那么快

  1. 误区1:高性能服务器一定是多线程的
  2. 误区2:多线程(CPU上下文切换)一定比单线程性能高
    速度:CPU>内存>硬盘
    快的原因:Redis将所有的数据放到内存中,多线程会产生CPU上下文切换,会耗时!!!,对于内存系统来说,如果没有上下文切换,效率就是最高的多次读写就在一个CPU上,在内存情况下,这个就是最佳方案

Redis可以当作数据库缓存消息中间件

数据类型

Sring类型

对指定key追加value值,动态修改字符串

获取字符串长度命令:

网站播放量,文章阅读量,实现累加/累减

设置增长步长

截取字符串

替换字符串的一部分
替换指定位置开始的字符串

设置key-value 10秒后 过期时间

批量设置key-value,批量获取value

List类型

在redis里面,可以把List玩成队列,栈
所有的命令都是以L开头的

存储一个list对象

查询指定list中对象

【狂神说Java】Redis相关推荐

  1. 2021-3-20 狂神说java之 redis学习

    Nosql概述 Nosql = not only sql (不仅仅是SQL) 泛指非关系型数据库 关系型数据库:表格,行,列 很多的数据类型用户的个人信息,社交网络,地理位置.这些数据类型的存储不需要 ...

  2. 【狂神说Java】Docker最新超详细版教程通俗易懂 - 学习笔记

    传送门:官方参考文档 | Docker Hub镜像仓库 | [狂神说Java]Docker视频教程 Docker概述 Docker 是一个便携的应用容器,基于 Go 语言开发的.它可以让开发者打包应用 ...

  3. SpringBoot所有知识点详解,根据狂神说java老师的整理

    1.SpringBoot:Hello,World! SpringBoot简介 1.1.回顾什么是Spring Spring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架,作者:Rod ...

  4. 基于《狂神说Java》ElasticSearch--学习笔记

    前言: 本笔记仅做学习与复习使用,不存在刻意抄袭. 给各位学友强烈推荐<遇见狂神说>他的整套Java学习路线使我获益匪浅!!! 点击跳转至遇见狂神说哔哩哔哩首页 点击跳转至原笔记地址 如果 ...

  5. Docker02 狂神Docker视频学习笔记 :【狂神说Java 哔哩哔哩】Docker最新超详细版教程通俗易懂

    目录 0. 视频源 0. 学习网址 基础篇 1. Docker概述 1.1 Docker为什么出现? 1.2 Docker历史 1.3 Docker能干什么 2. Docker安装 2.1 Docke ...

  6. 基于《狂神说Java》Vue--学习笔记

    前言: 本笔记仅做学习与复习使用,不存在刻意抄袭. -------------------------------------------------------------------------- ...

  7. 【狂神说】Redis

    学习资料: [狂神说Java]Redis最新超详细版教程通俗易懂_哔哩哔哩_bilibili (72条消息) Redis(基于狂神说Java-Redis)_你给我把被子盖好了,别再踢了的博客-CSDN ...

  8. (全)SpringBoot学习笔记(狂神说java系列)

    文章目录 从今天开始就进入微服务阶段 1.HelloWorld 1.1回顾什么是Spring 1.2什么是SpringBoot 1.3微服务架构 2.第一个SpringBoot程序 2.1环境配置 2 ...

  9. 【狂神说Java】ElasticSearch7.6.x

    [狂神说Java]ElasticSearch7.6.x学习笔记 在学习ElasticSearch之前,先简单了解一下Lucene: Doug Cutting开发 是apache软件基金会 jakart ...

  10. java redis 下载_redis Java源代码 redis.rar - 下载 - 搜珍网

    压缩包 : redis.rar 列表 redis/.classpath redis/.mymetadata redis/.project redis/.settings/.jsdtscope redi ...

最新文章

  1. 杭电1069_01背包
  2. 只不过是R.java文件的特性-----出错信息:R.java was modified manually! Reverting to generated version!...
  3. java 接口式自定义回调函数
  4. 【学习笔记】传输层:TCP协议(报文段、连接管理{握手}、可靠传输、流量控制、拥塞控制)
  5. Android 系统(214)---Android 7.1.1时间更新NITZ和NTP详解
  6. java 登陆系统设计_Java 程序设计——登录系统
  7. android_dialog
  8. IOCAutofac与ORMEntityFramwork的联系--单例模式
  9. 亲身经历:2018年深圳保洁员工资时薪75,月薪不清楚
  10. 序列傅里叶变换性质matlab,MATLAB傅里叶变换及性质.docx
  11. WPF——自定义日历
  12. 【桃园恋歌】mmd镜头+动作打包下载.zip
  13. 进程同步与互斥——吸烟者问题源码实现(cigarette smoker’s problem)
  14. KGB知识图谱充分发挥海量数据处理优势
  15. iOS开发 frame与bounds
  16. Python编写随机一百个人的姓名,加面试考核得分
  17. 一个服务器多个网站搜外问答,多个网站共用一台服务器对SEO有影响吗?
  18. 德国质量链接中国速度,奥迪一汽新能源汽车有限公司在电动化赛道上全速奔跑
  19. Edge浏览器缓存问题简直可怕
  20. 安全狗陈荣有:打造“即开即用”的云原生安全能力

热门文章

  1. 精密划片机的三种切割方式
  2. UiPath 网页元素识别
  3. Portable Batch System
  4. SuperMap iDesktop 9D 制作专题地图
  5. MIT 线性代数导论 第十九、二十讲:行列式公式、代数余子式、克拉默法则
  6. fatal error: ft2build.h: 没有那个文件或目录
  7. 用文氏图解析条件概率与贝叶斯概率
  8. pycharm逗号后面补空格_解决在pycharm 中复制代码时出现空格的方法
  9. Python的一点人生经验
  10. Laravel 使用 seeder 使用要点