【狂神说Java】Redis
什么是NoSQL
为什么要用NoSQL
1.单机数据库时代
- 90年代,网站访问量小,单个数据库可以顶住当时的访问量
- 使用静态网页,服务器压力不会太大
缺点:
- 数据量太大,一台机器放不下
- 数据量到达300w以上需要建立MySQL索引,B+树
- 当时数据库读写一体,服务器承受不了
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特点
方便扩展(数据之间没有联系)
大数据量高性能,Redis可以支持8w/s的写操作,11w/s的读操作
数据类型多样,不需要设计数据库,随用随取
传统关系型数据库和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能干嘛?
- 内存存储,持久化,内存中断电即失,持久化!!(RDB,AOF)
- 效率高,可用于高速缓存
- 发布,订阅系统
- 地图信息分析
- 计数器,(微信微博浏览量)
Redis特性
- 多种数据类型
- 持久化
- 集群
- 事务
- …
需要用到的东西
Redis官网
Redis推荐在Linux上面搭建开发
Windows下载安装
- 官网下载压缩包
- 解压到环境目录就行,Redis很小(5MB)
- 开启Redis,运行服务器:redis-server.exe
- 使用redis客户端来连接redis服务器
Linux下载安装
电脑还未安装Linux操作系统,这部分略
性能测试
redis-benchmark是一个官方自带的性能测试工具
redis-benchmark+命令参数
基础知识
redis默认有16个数据库
可以使用select切换数据库
查看当前数据库大小
查看所有的key
清空当前redis数据库命令
清除全部数据库命令
查看key是否存在
删除当前数据库的指定key-value
设置key-value的过期时间
查看key的数据类型
思考:为什么Redis端口号是6379!
女明星MERZ的名称缩写手机按键
Redis是单线程
- Redis是速度快,是基于内存操作的,CPU不是Redis性能瓶颈,Redis只和内存和网络带宽有关
- Redis是10W+的QPS
Redis为什么单线程还那么快
- 误区1:高性能服务器一定是多线程的
- 误区2:多线程(CPU上下文切换)一定比单线程性能高
速度:CPU>内存>硬盘
快的原因:Redis将所有的数据放到内存中,多线程会产生CPU上下文切换,会耗时!!!,对于内存系统来说,如果没有上下文切换,效率就是最高的多次读写就在一个CPU上,在内存情况下,这个就是最佳方案
Redis可以当作数据库,缓存,消息中间件
数据类型
Sring类型
对指定key追加value值,动态修改字符串
获取字符串长度命令:
网站播放量,文章阅读量,实现累加/累减
设置增长步长
截取字符串
替换字符串的一部分
替换指定位置开始的字符串
设置key-value 10秒后 过期时间
批量设置key-value,批量获取value
List类型
在redis里面,可以把List玩成队列,栈
所有的命令都是以L开头的
存储一个list对象
查询指定list中对象
【狂神说Java】Redis相关推荐
- 2021-3-20 狂神说java之 redis学习
Nosql概述 Nosql = not only sql (不仅仅是SQL) 泛指非关系型数据库 关系型数据库:表格,行,列 很多的数据类型用户的个人信息,社交网络,地理位置.这些数据类型的存储不需要 ...
- 【狂神说Java】Docker最新超详细版教程通俗易懂 - 学习笔记
传送门:官方参考文档 | Docker Hub镜像仓库 | [狂神说Java]Docker视频教程 Docker概述 Docker 是一个便携的应用容器,基于 Go 语言开发的.它可以让开发者打包应用 ...
- SpringBoot所有知识点详解,根据狂神说java老师的整理
1.SpringBoot:Hello,World! SpringBoot简介 1.1.回顾什么是Spring Spring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架,作者:Rod ...
- 基于《狂神说Java》ElasticSearch--学习笔记
前言: 本笔记仅做学习与复习使用,不存在刻意抄袭. 给各位学友强烈推荐<遇见狂神说>他的整套Java学习路线使我获益匪浅!!! 点击跳转至遇见狂神说哔哩哔哩首页 点击跳转至原笔记地址 如果 ...
- Docker02 狂神Docker视频学习笔记 :【狂神说Java 哔哩哔哩】Docker最新超详细版教程通俗易懂
目录 0. 视频源 0. 学习网址 基础篇 1. Docker概述 1.1 Docker为什么出现? 1.2 Docker历史 1.3 Docker能干什么 2. Docker安装 2.1 Docke ...
- 基于《狂神说Java》Vue--学习笔记
前言: 本笔记仅做学习与复习使用,不存在刻意抄袭. -------------------------------------------------------------------------- ...
- 【狂神说】Redis
学习资料: [狂神说Java]Redis最新超详细版教程通俗易懂_哔哩哔哩_bilibili (72条消息) Redis(基于狂神说Java-Redis)_你给我把被子盖好了,别再踢了的博客-CSDN ...
- (全)SpringBoot学习笔记(狂神说java系列)
文章目录 从今天开始就进入微服务阶段 1.HelloWorld 1.1回顾什么是Spring 1.2什么是SpringBoot 1.3微服务架构 2.第一个SpringBoot程序 2.1环境配置 2 ...
- 【狂神说Java】ElasticSearch7.6.x
[狂神说Java]ElasticSearch7.6.x学习笔记 在学习ElasticSearch之前,先简单了解一下Lucene: Doug Cutting开发 是apache软件基金会 jakart ...
- java redis 下载_redis Java源代码 redis.rar - 下载 - 搜珍网
压缩包 : redis.rar 列表 redis/.classpath redis/.mymetadata redis/.project redis/.settings/.jsdtscope redi ...
最新文章
- 杭电1069_01背包
- 只不过是R.java文件的特性-----出错信息:R.java was modified manually! Reverting to generated version!...
- java 接口式自定义回调函数
- 【学习笔记】传输层:TCP协议(报文段、连接管理{握手}、可靠传输、流量控制、拥塞控制)
- Android 系统(214)---Android 7.1.1时间更新NITZ和NTP详解
- java 登陆系统设计_Java 程序设计——登录系统
- android_dialog
- IOCAutofac与ORMEntityFramwork的联系--单例模式
- 亲身经历:2018年深圳保洁员工资时薪75,月薪不清楚
- 序列傅里叶变换性质matlab,MATLAB傅里叶变换及性质.docx
- WPF——自定义日历
- 【桃园恋歌】mmd镜头+动作打包下载.zip
- 进程同步与互斥——吸烟者问题源码实现(cigarette smoker’s problem)
- KGB知识图谱充分发挥海量数据处理优势
- iOS开发 frame与bounds
- Python编写随机一百个人的姓名,加面试考核得分
- 一个服务器多个网站搜外问答,多个网站共用一台服务器对SEO有影响吗?
- 德国质量链接中国速度,奥迪一汽新能源汽车有限公司在电动化赛道上全速奔跑
- Edge浏览器缓存问题简直可怕
- 安全狗陈荣有:打造“即开即用”的云原生安全能力