Redis笔记——(狂神说)待续

Nosql概述

为什么要用NoSql?

1、单机mysql的年代:90年代,网站访问量小,很多使用静态网页html写的,服务器没压力。
当时瓶颈是:1)数据量太大一个机器放不下。2)数据的索引(B+Tree),一个机器内存也放不下。3)访问量(读写混合),一个服务器承受不了~

2、Memcached(缓存)+ Mysql+ 垂直拆分 (读写分离)。 
如用2台机器的mysql负责读操作,一台机器的mysql负责写操作并且同步给其他2机器的mysql,然后读操作mysql前面也可以加上一层缓存处理大量读请求。
网站80%的情况都是在读,每次都要去查询数据库的话就十分的麻烦!所以说我们希望减轻数据的压力,我们可以使用缓存来保证效率!
发展过程︰优化数据结构和索引-->文件缓存(IO ) ---> Memcached (当时最热门的技术!)

3、分库分表 + 水平拆分(mysql集群) 
如上面2台读mysql的机器和一台写mysql的机器可以组成一个集群1,然后另外2台读mysql的机器和一台写mysql的机器(其实也可叫读的mysql为slave,写的mysql为master)再组成集群2,...集群3,这样只在集群1中放1/n的数据,所有集群组合成一个完整的数据。用户来读写的时候通过算法再去相应的集群中找。

对于读请求,可通过memcache缓存来解决。
对于写请求:
早些年:MyISAM:表锁,十分影响效率,高并发下会出现严重的所问题
转战InnoDB:行锁
慢慢的就开始使用分库分表来解决写的压力。在那个年代MySql就推出了表分区,这个并没有多少公司使用。也推出了mysql的集群,很好的满足了当时那个年代的需求。 

4、如今最近的年代
2010--2020十年之间,世界已经发生了翻天覆地的变化;(定位,也是一种数据,音乐,热榜!)
MySQL等关系型数据库就不够用了!数据量很多,变化很快~!
MySQL有的使用它来存储一些比较大的文件,博客,图片!数据库表很大,效率就低了!如果有一种数据库来专门处理这种数据,
MySQL压力就变得十分小(研究如何处理这些问题!)大数据的IO压力下,表几乎没法更大!

 为什么要用NoSQL ! 

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

什么是NoSQL?

(关系型数据库:表格,行,列)

not noly sql  ,

泛指非关系型数据库的。随着web2.0互联网的诞生!传统的关系型数据库很难对付web2.0时代!尤其是超大规模的高并发的社区!暴露出来很多难以克服的问题,NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的,而且是我们当下必须要掌握的一个技术!
很多的数据类型用户的个人信息,社交网络,地理位置。这些数据类型的存储不需要一个固定的格式!不需要多余的操作就可以横向扩展的!

Map<String,Object>使用键值对来控制!

传统RDBMS和NoSQL区别

传统的 RDBMS
-结构化组织- SQL
-数据和关系都存在单独的表中 row col

-操作操作,数据定义语言
-严格的一致性
-基础的事务

......


Nosql
-不仅仅是数据
-没有固定的查询语言
-键值对存储,列存储,文档存储,图形数据库(社交关系)

-最终一致性,
- CAP定理和BASE(异地多活)

-高性能,高可用,高可扩
- ....

大数据时代的3V:主要是描述问题的
1.海量Volume
2.多样Variety        
3.实时Velocity
大数据时代的3高:主要是对程序的要求
1.高并发
2.高可拓
3.高性能

真正在公司中的实践:

NoSQL + RDBMS一起使用才是最强的,阿里巴巴的架构演进!

技术没有高低之分,就看你如何去使用!

NoSQL的四大分类

NoSQL的四大分类


KV键值对∶
·新浪:Redis
·美团:Redis + Tair
·阿里、百度:Redis + memecache

文档型数据库( bson格式和json一样)∶
.MongoDB(一般必须要掌握)
    o MongoDB是一个基于分布式文件存储的数据库,C++编写,主要用来处理大量的文档!
    o MongoDB是一个介于关系型数据库和非关系型数据中中间的产品! MongoDB是非关系型数据库中功能最丰富,最像关系型数据库的!
. ConthDB

列存储数据库
· HBase
·分布式文件系统

图关系数据库
他不是存图形,放的是关系,比如︰朋友圈社交网络,广告推荐!
Neo4j ,lnfoGrid ;

Redis入门

概述

Redis是什么?
Redis ( Remote Dictionary Server ),即远程字典服务
是一个开源的使用ANSl C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的AP.
免费和开源!是当下最热门的NoSQL技术之一!也被人们称之为结构化数据库!
Redis 能干嘛?
1、内存存储、持久化,内存中是断电即失、所以说持久化很重要( rdb、aof )
2、效率高,可以用于高速缓存
3、发布订阅系统
4、地图信息分析
5、计时器、计数器(浏览量!)
6、.……
特性
1、多样的数据类型
2、持久化
3、集群
4、事务

注意:Wdinow在 Github上下载(停更很久了! )
Redis推荐都是在Linux服务器上搭建的,我们是基于Linux学习!

官网

官网:https://redis.io
中文网:http://redis.cn

Windows下安装Redis

详见hexo笔记springboot(21)。

Releases · tporadowski/redis · GitHub

可下载msi文件。然后运行安装,选择安装目录一路next即可。

然后安装目录根目录,即redis-server.exe所在的根目录上方敲cmd,使用下面命令开启:

服务端启动命令
redis-server.exe redis.windows.conf
客户端启动命令
redis-cli.exe

小bug,直接 redis-server.exe redis.windows.conf 起不来,需要先根目录上再开一个cmd,然后执行redis-cli.exe和shutdown和exit

D:\《D盘主文件夹》\桌面\Redis\Redis5>redis-cli.exe
127.0.0.1:6379> shutdown
not connected> exit

D:\《D盘主文件夹》\桌面\Redis\Redis5>

然后再在作为server的根目录上敲的cmd窗口中 redis-server.exe redis.windows.conf 就可成功启动了。

测试:

输入ping回车pong

使用:
set [key] [value]
get [key]

Linux下安装Redis

官网:https://redis.io

官网中下最新版的redis ,下载得到.tar.gz安装包  

打开Vmware虚拟机,运行linux镜像,如centOs7,

嫌弃界面不美观的可以ip address查看ens33的inet为当前linux的ip。然后使用finalShelll链接ssh输入ip,端口不用输,输入linux的登录用户和密码保存和连接即可。

1将下载的安装包.tar.gz拖曳到finalshell的/home/kdy/目录下,即上传windows中的安装包到centos7中。

cd /home cd kdy ,ll有安装包,再把安装包移动到/opt目录下 mv  redis-7.2.0.tar.gz /opt        cd /opt  ll有这个安装包

2解压缩:tar -zxvf redis-7.2.0.tar.gz   得到解压后的redis目录   

3.进入解压后的文件,可看到redis配置文件   cd redis-7.2.0  ll 里面有个 redis.conf

4.进入解压后的文件后,运行yum install gcc-c++  安装基本的环境   gcc -v查看版本

5.进入解压后的文件后,输入make回车   安装基本的环境  ,然后再make install

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/90369.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

rabbitmq的优先级队列

在我们系统中有一个 订单催付 的场景&#xff0c;我们的客户在天猫下的订单 , 淘宝会及时将订单推送给我们&#xff0c;如果在用户设定的时间内未付款那么就会给用户推送一条短信提醒&#xff0c;很简单的一个功能对吧&#xff0c;但是&#xff0c;tianmao商家对我们来说&#…

数据工厂调研及结果展示

数据工厂 一、背景 在开发自测、测试迭代测试、产品验收的过程中&#xff0c;都需要各种各样的前置数据&#xff0c;大致分为如下几类&#xff1a; 账号&#xff08;实名、权益等级、注册等&#xff09; 货源&#xff08;优货、急走、相似、一手、普通货源等&#xff09; …

创建 github 项目,并自动化配置

一 新建项目 github 创建新项目&#xff0c;并自动化部署 二 github 到本地 三 自动化部署 配置docker 和 Jenkins文件 改 Jenkins 配置。 3.1 需要配置的文件 3.2 修改jenkinsfile 项目名称 如果要新项目&#xff0c;就修改里面的依赖和Jenkinsfile里面的project name 四 …

开源文库系统moredoc

什么是 moredoc &#xff1f; moredoc 中文名 魔豆文库&#xff0c;是基于 golang 开发的类似百度文库、新浪爱问文库的开源文库系统&#xff0c;支持 TXT、PDF、EPUB、MOBI、Office 等格式文档的在线预览与管理&#xff0c;为 dochub 文库(github, gitee &#xff09;的重构版…

⌈算法进阶⌋图论::拓扑排序(Topological Sorting)——快速理解到熟练运用

目录 一、原理 1. 引例&#xff1a;207.课程表 2. 应用场景 3. 代码思路 二、代码模板 三、练习 1、210.课程表Ⅱ&#x1f7e2; 2、2392.给定条件下构造举证&#x1f7e1; 3、310.最小高度树 &#x1f7e1; 一、原理 1. 引例&#xff1a;207.课程表 就如大学课程安排一样&…

Leaflet开发入门

Leaflet开发入门 开发环境配置Leaflet开发库开发移动端Hybrid App或移动Web App 开发环境配置 电子地图已经渗透到O2O、生活服务、出行等领域&#xff0c;传统的GIS也孕育着互联网基因。在国内互联网电子地图领域&#xff0c;百度地图和高德地图较为出色&#xff0c;天地图作为…

CSS中如何改变鼠标指针样式(cursor)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ CSS中改变鼠标指针样式&#xff08;cursor&#xff09;⭐ 示例&#xff1a;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅…

快速排序三种思路详解!

一、快速排序的介绍 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c;其基本思想为&#xff1a;任取待排序元素序列中 的某元素作为基准值&#xff0c;按照该排序码将待排序集合分割成两子序列&#xff0c;左子序列中所有元素均小于基准值&#xff0c;…

CentOS7.9安装Java11

文章目录 Java11版本介绍安装步骤查看并卸载已有版本安装Java11最新版本配置生效 openjdk介绍 Java11版本介绍 Java 11是Java编程语言的一个重要版本&#xff0c;于2018年9月发布Java 11在语言特性、性能优化和安全性方面都有一些显著的改进&#xff0c;为Java开发者提供了更多…

minion在ubuntu上的搭建步骤

在Ubuntu上搭建MinIO可以按照以下步骤进行&#xff1a; 下载MinIO服务器二进制文件&#xff1a; 通过浏览器访问 https://min.io/download 或使用以下命令获取最新的MinIO二进制文件&#xff1a;wget https://dl.min.io/server/minio/release/linux-amd64/minio赋予二进制文件…

无人机精细化巡检方案制定:提高效率与准确性的关键

在当前技术日新月异的时代&#xff0c;无人机在多个领域的应用已成为行业标配。但如何制定出一套有效、细致的无人机巡检方案&#xff0c;确保其最大效能&#xff0c;成为许多组织与公司的核心议题。其中&#xff0c;复亚智能在此领域已展现出了卓越的实力与深入的见解。 1. 精…

最新SQLMap进阶技术

SQLMap进阶&#xff1a;参数讲解 &#xff08;1&#xff09;–level 5&#xff1a;探测等级。 参数“–level 5”指需要执行的测试等级&#xff0c;一共有5个等级&#xff08;1~5级&#xff09;&#xff0c;可不加“level”&#xff0c;默认是1级。可以在xml/payloads.xml中看…

Flask入门一 ——虚拟环境及Flask安装

Flask入门一 ——虚拟环境及Flask安装 在大多数标准中&#xff0c;Flask都算是小型框架&#xff0c;小到可以称为“微框架”&#xff0c;但是并不意味着他比其他框架功能少。Flask自开发伊始就被设计为可扩展的框架。Flask具有一个包含基本服务的强健核心&#xff0c;其他功能…

element-ui table中使用type=‘selection‘ 实现禁用,勾选,默认选中不可修改 三种状态显示问题

element-ui table中使用type‘selection’ 实现禁用&#xff0c;勾选&#xff0c;默认选中不可修改 三种状态显示问题 实现效果 需求 1.status‘CheckOk 时 勾选框默认选中但不可修改勾选状态 2.status‘CheckFail 时 勾选框禁用 3.status‘ 时 勾选框可以勾选 实现思路 采…

Selenium 捕获 console logs (Java)

目录 启用日志记录功能 有时候在进行自动化测试的时候控制台输出会帮忙定位问题&#xff0c;所以捕获控制台输出就显得很重要了~ 以下以selenium 4为例&#xff1a; 我们可以使用driver.manage().logs().get(LogType.BROWSER)代码在Selenium中检索日志&#xff0c;该代码将返回…

Java单元测试 JUnit 5 快速上手

一、背景 什么是 JUnit 5&#xff1f;首先就得聊下 Java 单元测试框架 JUnit&#xff0c;它与另一个框架 TestNG 占据了 Java领域里单元测试框架的主要市场&#xff0c;其中 JUnit 有着较长的发展历史和不断演进的丰富功能&#xff0c;备受大多数 Java 开发者的青睐。 而说到…

LLM-chatgpt训练过程

流程简介 主要包含模型预训练和指令微调两个阶段 模型预训练&#xff1a;搜集海量的文本数据&#xff0c;无监督的训练自回归decoder&#xff1b; O T P ( O t < T ) O_TP(O_{t<T}) OT​P(Ot<T​)&#xff0c;损失函数CE loss指令微调&#xff1a;在输入文本中加入…

Windows命令行调用main函数

通常C/C的入口函数都是main函数&#xff0c;平常一般使用的原型都是 int main() ;但是&#xff0c;实际上&#xff0c;main函数也可以有参数 int main(intargc[ ,char*argv[] [,char*envp[] ] ] ); int wmain(intargc[ ,wchar_t*argv[] [,wchar_t*envp[] ] ] );//适用于这种带…

P1065 [NOIP2006 提高组] 作业调度方案

题目描述 我们现在要利用 m m m 台机器加工 n n n 个工件&#xff0c;每个工件都有 m m m 道工序&#xff0c;每道工序都在不同的指定的机器上完成。每个工件的每道工序都有指定的加工时间。 每个工件的每个工序称为一个操作&#xff0c;我们用记号 j-k 表示一个操作&…

苹果新健康专利:利用 iPhone、Apple Watch 来分析佩戴者的呼吸情况

根据美国商标和专利局&#xff08;USPTO&#xff09;公示的清单&#xff0c;苹果获得了一项健康相关的技术专利&#xff0c;可以利用 iPhone、Apple Watch 来分析佩戴者的呼吸系统。 苹果在专利中概述了一种测量用户呼吸功能的系统&#xff0c;通过 iPhone 上的光学感测单元&am…