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

相关推荐
vvvae12342 小时前
分布式数据库
数据库
雪域迷影2 小时前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
bug菌¹3 小时前
滚雪球学Oracle[4.2讲]:PL/SQL基础语法
数据库·oracle
逸巽散人3 小时前
SQL基础教程
数据库·sql·oracle
月空MoonSky3 小时前
Oracle中TRUNC()函数详解
数据库·sql·oracle
momo小菜pa3 小时前
【MySQL 06】表的增删查改
数据库·mysql
m0_689618284 小时前
水凝胶发生器,不对称设计妙,医电应用前景广
笔记
Ace'4 小时前
每日一题&&学习笔记
笔记·学习
挥剑决浮云 -4 小时前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记
向上的车轮4 小时前
Django学习笔记二:数据库操作详解
数据库·django