102.【Redis】(一)

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 102.【Redis】

前言

1、单机数据库.90年代,一个网站的访问量一般不会太大,单个数据库完全够用,数据库也没有什么压力。但是,现在我们处于大数据时代;大数据顾名思义数据量很多,那么应用传统的关系型数据库就有可能会出现如下问题:

DAL 数据库访问层

  • 数据量增加到一定程度,单机数据库就放不下了
  • 数据的索引(B+ Tree),一个机器内存也存放不下
  • 访问量变大后(读写混合),一台服务器承受不住
    只要发生如上情况之一,那么我们的数据库就必须要晋级

2、Memcache(缓存) + Mysql + 垂直拆分(读写分离

80%的网站都是在进行读操作,这样的话每次都要去数据库查询就非常麻烦,同时为了能够减轻数据库、服务器的压力,我们可以使用缓存来保证效率!

缓存的出现经历了以下几个过程:

  • 优化数据库的数据结构和索引(难度大)
  • 文件缓存,通过IO流获取比每次都访问数据库效率略高,但是流量爆炸式增长时候,IO流也承受不了
  • MemCache,当时最热门的技术,通过在数据库和数据库访问层之间加上一层缓存,第一次访问时查询数据库,将结果保存到缓存,后续的查询先检查缓存,若有直接拿去使用,这样我们的访问效率就会大大提升

3、(分库分表) + 水平拆分 + MySQL集群

早些年MyISAM: 表锁,十分影响效率!高并发下就会出现严重的锁问题;

于是转战Innodb:行锁,每次查询数据只锁这一行。

慢慢的就开始使用分库分表来解决写的压力! MySQL 在哪个年代推出 了表分区!这个并没有多少公使用!

MySQL 的 集群,很好满足那个年代的所有需求!

4、如今最近的年代

MySQL 等关系型数据库就不够用了!数据量很多,变化很快!MySQL 有的使用它来存储一些比较大的文件,博客,图片!数据库表很大,效率就比较低了!

如果有一种据库来专门处理这种数据,MySQL压力就变得十分小(研究如何处理这些问题!)大数据的IO压力下,表几乎没法更大! Nosql的出现就是一种非常好的选择!

5、目前一个基本的互联网项目!

(一)、Nosql概述

1、为什么要用NoSQL ?

用户的个人信息,社交网络,地理位置,自己产生的数据,日志等等爆发式增长!传统的关系型数据库已无法满足这些数据处理的要求,这时我们就需要使用NoSQL数据库,它可以很好的处理上述的情况!

2、什么是Nosql

NoSQL = Not Only SQL(不仅仅是SQL)-----泛指非关系型数据库

这里有两个概念:关系型数据库和菲关系型数据库

  • 关系型数据库:列+行,同一个表下数据的结构是一样的。
  • 非关系型数据库:数据存储没有固定的格式,并且可以进行横向扩展。

NoSQL泛指非关系型数据库,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代!尤其是超大规模的高并发的社区,暴露出来很多难以克服的问题,NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的。

3、Nosql特点

  • 方便扩展(数据之间没有关系,很好扩展!)
  • 大数据量高性能(Redis一秒可以写8万次,读11万次,NoSQL的是缓存记录级的,是一种细粒度的缓存,性能会比较高!)
  • 数据类型是多样型的!(不需要事先设计数据库,随取随用!如果是数据量十分大的表,很多人很难根据三大范式将其完整的设计出来)

传统的 RDBMS(关系型) 和 NoSQL

传统的 RDBMS(关系型数据库):

  • 结构化组织
  • SQL
  • 数据和关系都存在单独的表中 :行+列
  • 操作,数据定义语言
  • 严格的一致性
  • 基础的事务操作

Nosql:

  • 不仅仅是数据
  • 没有固定的查询语言
  • 键值对存储,列存储,文档存储,图形数据库(社交关系)
  • 最终一致性
  • CAP定理和BASE
  • 高性能,高可用,高扩展

了解:3V + 3高

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

  • 海量Velume
  • 多样Variety
  • 实时Velocity

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

  • 高并发 (同时)
  • 高可扩 (随时水平拆分)
  • 高性能 (用户体验)

真正在公司中的实践:NoSQL + RDBMS(关系型) 一起使用才是最强的。

4、Nosql的四大分类

KV键值对:

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

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

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

列存储数据库

  • HBse
  • 分布式文件系统

图关系数据库

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

5、阿里巴巴数据结构演进

技术急不得,越是慢慢学,才能越扎实。

技术没有高低之分,就看适应不适用。

开源才是技术的王道。

阿里云-王坚的封神之路

# 1. 商品的基本信息
  名称、价格、商家信息:
  关系型数据库就可以解决了! MySQL/Orcal. 淘宝用的是自研发的MySQL
#2. 商品的描述、评论(文字比较多)
  文档型数据库中: MongoDB
#3. 图片
  分布式文件系统: FastDFS
  -淘宝自己的TFS
  -谷歌自己的 GFS
  -hadopp HDFS
  -阿里云的 oss
#4. 商品的关键字 (搜索)
  -搜索引擎 solr elasticsearch
  -ISerach: 多隆  
#5.商品人们的波段信息
  -内存数据库
  -Redis Tair、Memache...
#6.商品的交易,外部的支付接口
  -三方应用       

所有牛逼的人都有一段苦逼岁月,但是你只要像SB一样的去坚持,终究牛逼。

(二)、Redis入门

1.概述

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且还实现了master-slave(主从)同步

2.Redis能干什么?

  • 内存存储、持久化,内存是断电即失的,所以需要持久化(RDB、AOF)
  • 高效率、用于高速缓冲
  • 发布订阅系统
  • 地图信息分析、周围的人…
  • 计时器、计数器(浏览量)

3、Redis的特点

  • 速度快:Redis是用C语言实现的,所有数据存储在内存中以键值对形式保存。
  • 丰富的数据类型 :Redis支持五种数据结构:String、List、Set、Hash、Zset。
  • 持久化操作:Redis的所有数据存储在内存中,对数据的更新将异步地保存到磁盘上。
  • 主从复制:主服务器上只进行写的操作,在从的服务器上进行读的操作。
  • 支持高可用和分布式:使用redis自带的哨兵机制来实现高可用。
  • 支持事务
  • 集群操作

4、window安装Redis

  1. 下载安装包 https://github.com/tporadowski/redis/releases?page=1

  2. 解压到我们程序员都要由的环境目录下

  3. 开启Redis,双击运行服务即可

  4. 使用客户端Redis来链接redis

  5. window下使用确实简单,但是Redis 推荐我们使用Linux去开发。

5、Linux安装Redis

  1. 下载压缩包
  2. 上传到home目录下面的jsxs文件夹中

3. 安装基本环境

(1)解压Redis的安装包!程序一般放在/opt目录下。

# 移动到 /opt
mv redis-7.0.9.tar.gz /opt
#进入到 /opt目录
cd /opt
# 解压redis
tar -zxvf redis-7.0.9.tar.gz

解压完成

解压完成后,可以看到我们的redis配置文件

  1. 安装基本环境
# 安装基本的环境
yum install gcc-c++
# 执行make命令
make
# 安装
make install

make成功


相关文章
|
NoSQL 算法 Java
【工具类用法】Hutool里的生成唯一Id唯的工具类
【工具类用法】Hutool里的生成唯一Id唯的工具类
1328 0
|
4月前
|
机器学习/深度学习 算法 安全
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
295 6
|
运维 监控 Linux
iofsstat:帮你轻松定位 IO 突高,前因后果一目了然 | 龙蜥技术
磁盘被打满到底是真实的业务需求量上来了呢?还是有什么野进程在占用 IO? iofsstat 帮你精准定位。
iofsstat:帮你轻松定位 IO 突高,前因后果一目了然 | 龙蜥技术
|
7月前
|
机器学习/深度学习 自然语言处理 前端开发
国内快递地址解析技术的工作原理详解
随着电商和快递行业快速发展,非结构化地址问题日益突出,如字段混杂、拼写错误等,传统方式难以高效处理。为此,探数平台推出基于NLP和地理信息的快递地址解析API,可将原始地址文本解析为标准结构化字段(如省、市、区、街道等),并支持收件人姓名与电话提取。 技术上,该API采用深度学习模型(如BERT、BiLSTM)进行语义理解,结合地址知识图谱实现纠错与补全。服务支持SaaS调用或私有化部署,性能稳定,适用于各类前端场景。通过地址结构化处理,企业可显著提升订单处理效率,减少配送错误,优化用户体验,助力全链路智能化升级。无论是电商平台还是物流系统,均可从中受益。
561 0
|
Ubuntu Linux
探险迷宫——在Linux上畅玩Nethack
Nethack是一款经典的命令行角色扮演游戏,它在Linux系统上备受喜爱。在这个游戏中,你将进入一个神秘的地牢,探险、战斗、寻找宝藏,面对各种怪物和陷阱。本文将介绍如何在Linux上安装、运行和玩Nethack,以及一些游戏中的基本策略和技巧。
875 0
|
存储 JavaScript 安全
Node中的AsyncLocalStorage 使用问题之nestjs-cls 库提供了什么功能
Node中的AsyncLocalStorage 使用问题之nestjs-cls 库提供了什么功能
309 3
|
数据采集 XML 数据可视化
【优秀python案例】基于Python的口红商品的爬虫与可视化的设计与实现
本文介绍了一个基于Python的京东商城口红商品爬虫与可视化系统,通过requests和lxml库抓取商品信息,使用pandas进行数据处理,matplotlib进行数据可视化,分析了口红的价格、评论数(销量)分布以及自营口红品牌的销量和商品种类。
484 3
【优秀python案例】基于Python的口红商品的爬虫与可视化的设计与实现
|
弹性计算 负载均衡 监控
加权最小连接数算法介绍
加权最小连接数算法介绍
707 6
|
机器学习/深度学习 自然语言处理
【大模型】在大语言模型的架构中,Transformer有何作用?
【5月更文挑战第5天】【大模型】在大语言模型的架构中,Transformer有何作用?
|
存储 NoSQL 大数据
分布式数据库有哪几种
数据库的发展从早期的单机数据库,到现在的分布式数据库。在单机数据库时代,所有的数据都存储在单机中,随着计算机技术的发展,开始出现了多台计算机联合处理数据的需求,从而诞生了分布式数据库。