102.【Redis】(一)

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云原生数据库 PolarDB PostgreSQL 版,企业版 4核16GB
推荐场景:
HTAP混合负载
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 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成功


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
存储 NoSQL 测试技术
【Redis】redis为什么快
【Redis】redis为什么快
|
2月前
|
存储 NoSQL Go
Redis 双端链表
Redis 双端链表
32 0
|
8月前
|
存储 JSON NoSQL
redis中的value
需要注意的是,redis中的value是以二进制形式存储的,因此在存储和读取数据时需要进行序列化和反序列化操作。常用的序列化方式包括JSON、Protobuf、Msgpack等。示例代码如下
52 0
|
9月前
|
存储 NoSQL Linux
Redis之Redis为什么这么快解读
Redis之Redis为什么这么快解读
|
10月前
|
存储 缓存 NoSQL
|
11月前
|
存储 缓存 NoSQL
Redis5
Redis5
105 0
|
NoSQL 安全 Unix
Redis (必看)
Redis 学习点滴 知识分享
69 0
|
存储 缓存 监控
|
存储 消息中间件 缓存
Redis的使用
Redis的使用
254 0
Redis的使用
|
消息中间件 存储 NoSQL
Redis几个简单的问题
《基础系列》
116 0