Redis 简介及安装(一)|学习笔记

简介: 快速学习 Redis 简介及安装(一)

开发者学堂课程【Redis 入门实战演练  Redis 简介及安装(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/653/detail/10832


Redis 简介及安装(一)


内容简介

一、redis 基础:

二、rsdis 安装及使用


一、redis基础:

官网地址:https://redis.iol

Redis 和 Memcached是非关系型数据库也称为NoSQL数据库,MySQL、Mariadb、SQL Server、PostgreSQL、Oracle 数据库属于关系型数据(RDBMS, Relational Database Management System)

MySQL、Mariadb 二者不能相互替换。

(1)redis 简介:

Redis(Remote Dictionary Server)在2009年发布,开发者 Salvatore Sanfilippo 是意大利开发者,他本想为自己的公司开发一个用于替换 MySQL 的产品 Redis,但是没有想到他把 Redis 开源后大受欢迎,短短几年,Redis 就有了很大的用户群体,目前国内外使用的公司有知乎网、新浪微博、GitHub 等

redis 是一个开源的、遵循 BSD 协议的、基于内存的而且目前比较流行的键值数据库(key-value database),是一个非关系型数据库,redis 提供将内存通过网络远程共享的一种服务,提供类似功能的还有 memcache,但相比 memcache,redis 还提供了易扩展、高性能、具备数据持久性等功能。

Redis 在高并发、低延迟环境要求比较高的环境使用量非常广泛,目前 redis 在DB-Engine 月排行榜https://db.engines.com/en/

ranking 中一直比较靠前,而且一直是键值型存储类的首位。

image.png

https://db.engines.com/en/ranking 是国外的一个统计网站,它会统计出当前关系型数据库和非关系型数据库受欢迎的使用程度。

image.png

(2)redis 对比 memcached:

(3)支持数据的持久化:可以将内存中的数据保持在磁盘中,重启 redis 服务或者服务器之后可以从备份文件中恢复数据到内存继续使用。

(4)支持更多的数据类型:支持string(字符串)、hash(哈希数据)、list(列表)、set(集台)、zet(有序集合)支持数据的备份:可以实现类似于数据的 master-s1ave 模式的数据备份,另外也支持使用快照+AOF。

(5)支持更大的value数据:memcache 单个 key value 最大只支持 1MB,而 redis 最大支持512MB。

(6)Redis 是单线程,而 memcache 是多线程,所以单机情况下没有 memcache 并发高,但 redis 支持分布式集群以实现更高的并发,单 Redis 实例可以实现数万并发。

(7)支持集群横向扩展:基于 redis cluster 的横向扩展,可以实现分布式集群,大幅提升性能和数据安全性。都是基于 C 语言开发。

(8)redis 典型应用场景:

(9)Session 共享:常见于 web 集群中的 Tomcat 或者 PP 中多 web 服务器 session 共享

(10)消息队列:ELK 的日志缓存、部分业务的订阅发布系统

(11)计数器:访问排行榜、商品浏览数等和次数相关的数值统计场景缓存;数据库查询缓存、电商网站商品信息、新闻内容

(12)微博/微信社交场合:共同好友、点赞评论等

都是基于 C 语言开发的,这个横向横向扩展功能,这个 redis 的功能,在面试的时候,可能会问到。现在的 redis 已经发生改变,早期的 redis 功能比较单一,因为那个时候还不支持 redis class,这个功能是在后期才支持的。做机群的时候,并不是每个公司都会用,因为这个非常的。消耗服务器而且并不是拿一两个服务器就能做成。如果真正想把这个环境跑起来,得需要六台服务器。

image.png

六台服务器这三个三个是一组,总共需要六台服务器去做一个机群。假如这上面三个是一类,下面三个是一类,当上面这类 download 之后的,同组当中会把角色接管过来并会自动替换然后自动对外提供读写服务所以这个功能是功能较好但用起来比较消耗机器,有的公司比较节省可能拿三台服务器去跑,但是最好用六个服务器去跑,但是一般的保险公司可能服务器就那么几十个,没有较多的服务器建立机群。

接下来是三人共享,这个也是用的最多最多的功能之一,常见的是在 web 集群中。然后,是第二个是消费,也就是日志收集时,我们可以把数据临时放到 redis 里面缓存一下,然后在以后的时间里面再逐渐把它取走。有一个数据存储搜索系统 elasticsearch 还有日志收集工具,叫 logstash。还有 kafka,通常为了节省服务器实现图形展示。

logstash 在收集数据时不把数据直接写道测试里面去而且必须在中间加个 redis 或者加个其他的临时的存储系统的原因是因为公司里面一个服务器要装一个 logstash,制作日志收集,要是几十个服务器,或者上百个服务器,那就意味着有上百个,有上百个这样的日志收集的程序,如果用户的访量很大,可能在每一秒钟都要往里面写入大量的数据。这个数据包括访问日志,甚至是应用程序的错误日志等等,这时 elasticsearch 会抵挡不住,就会丢失数据,所以我们会把数据临时先存储到 redis 中,因为 redis 是使用内存,所以说它的性能非常高。可以直接把数据写到内存里面去。然后在后期再逐渐的通过 logstash 把数据取出来。起床以后再向 elasticsearch 写进去。以这样的形式缓存来缓解测试服务器的压力。因为这个数据一旦往里面写,直接会把 elasticsearch 测试服务器撑爆,抗不了数十上百个服务器的日志统一往里面写当然后面会讲,你可以对 elasticsearch 做横向扩容,就是一个 elasticsearch 扛不住那么多个日志就给他们做集群。我们可以通过缓存层来缓存数据。做一个设置服务器集群,直到它能够扛

image.png

找一个商品,比如找手机。在手机下面可以找比如46万加条评论,或者多少万评论,这个评论数也好,当然还有点赞等等,在微博和微信等社交场合,共同好友还有这种点赞、评论等等这种数据就是变化量比较大,因为今天这时点个赞,下一次再进行点赞,不久又把这个取消了,或者又进行评论,或者另外一个人又评论。也就是张三点一下赞,李四点一下赞,然后不久帮王五评论一下,这种数据会频繁频繁的发生变化,总不能用户点一下赞就把这个数据写到里面去,虽然可以实现,但是这个这个速率或者这个性能会相对比较低下,

image.png

如果放数据库这个功能也能实现,那怎么放数据库?就是下单之后,这个程序会监听到一个用户,触发了某个程序,然后,这个程序会到数据库里面查出来,他当前的值是多少,然后在当前值加一。如果他发现,当年龄为当前为零,没有人点过赞,那么我就把张三点再加上,那就为一了。当前值为二,在当前的二的基础之上,再加一这种性能是比较低下的,毕竟要频繁的读数据库和写数据库的内容,那后来应该怎么办?这时可以举个例子。就是在一个线下的推销活动,推销活动在线下开了一个摇一摇的红包,这个摇一摇会让当前的用户扫一个二维码,然后在同一个时间之内摇一摇,瑶了之后会有红包或者某些优惠活动。那这个优惠活动也是写的数据库,把这个数据库单独列出来,比如这个数据库里面有红包,有什么优惠。在刚开始的时候,程序开发没有考虑到数量巨大。只考虑这个功能实现,所以刚开始使用数据库在同一时间之内是几十个人,多的时候则是成百上千。这时他们一摇摇,那么这上千个人同时进入到这个服务器上去,那么数据库发起上千个链接去改数据库里面的值,后来就会发生两人同时摇一摇的时间差非常非常短,基本上都是都是毫秒或者纳秒级别的。那么,这个数据还没修改完之后,这个时候就堆积了大量的链接到数据库。所以这时就是有很多操作不能及时处理。两三秒钟上千个用户的请求,这时根本处理不了这么快,所以就会导致很多用户摇摇摇失败然后超时了等等,导致前几场的线下的促销活动很不成功。

所以后来直接改存储用的 redis,直接改成在 redis 中搭建了一个一个的数据,但这个数据是开发写的,不是举办活动者写的,把数据放到 redis 里面,比如个火爆的数量,或者优惠券等等。放到 redis 之后,尤其是这个数量限制上,我们会直接写好,写好之后 redis 本身有这种数据类型,这个数据类型就是之前说过的。像这个字符串 hash 列表集合等等,比如使用字符串,它可以在自己的基础之上加一或者减一,或者是进行什么操作,这个操作就比数据库快上很多,基本上你可以忽略到等待时间,比如客户要快了很多很多所以后,后面再举办其他的这种这种线下推销活动就快了很多,很少出现这种延迟或者失败了等等操作。然后这个结构处理完成之后假设处理了五秒钟或者三秒钟处理完成,再有同一个程序,直接取消数据库并把这个数据做一次优化。这就是它的使用场景,还有一个缓存就是数据库对数据库的查询缓存,做划分,这就是在查数据库时我们的某些程序在从数据库查数据时并不会像在大公司里面,在那种没有使用缓存的情况下,你的每一次读写都直接操作 memcache。套用之后,在那种变化量少的时候或者说少量时是没问题的。当我们的 APP 在查询数据的时候,先让他到 redis 缓存查一次。如果这个数据存在,那就能直接查到。这个缓存就直接返回给我们的程序。这样就节省了数据库的查询时间,毕竟数据库的查询时间太慢,但如果没有,这个程序就再到 memcache 里面去查找,查找完之后再把它写到里面。

相关文章
|
5月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
2月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
498 5
|
8月前
|
NoSQL 数据可视化 关系型数据库
安装 Redis
本文主要介绍了Linux系统下Redis的安装步骤,包括卸载旧版本、下载新版本、编译安装以及配置启动等详细操作,并解释了Redis默认端口6379的由来。同时,文章还简要说明了Windows环境下Redis的下载与服务安装方法。最后,推荐了几款Redis可视化管理工具,如RedisView、QuickRedis、AnotherRedisDesktopManager和RedisPlus,提供了它们的功能特点及下载链接,方便用户根据需求选择合适的工具进行数据库管理。
601 1
|
3月前
|
存储 消息中间件 缓存
Redis 简介:打造快速数据存储的利器
Redis 是一款开源的内存数据结构服务器,支持字符串、哈希、列表等多种数据结构,具备高性能、持久化、高可用及分布式特性,适用于缓存、会话管理、实时统计等场景。
|
7月前
|
消息中间件 NoSQL Linux
Redis的基本介绍和安装方式(包括Linux和Windows版本),以及常用命令的演示
Redis(Remote Dictionary Server)是一个高性能的开源键值存储数据库。它支持字符串、列表、散列、集合等多种数据类型,具有持久化、发布/订阅等高级功能。由于其出色的性能和广泛的使用场景,Redis在应用程序中常作为高速缓存、消息队列等用途。
932 16
|
7月前
|
JSON NoSQL Redis
在Rocky9系统上安装并使用redis-dump和redis-load命令的指南
以上步骤是在Rocky9上使用redis-dump和redis-load命令顺利出行的秘籍。如果在实行的过程中,发现了新的冒险和挑战,那么就像一个勇敢的航海家,本着探索未知的决心,解决问题并前进。
257 14
|
9月前
|
NoSQL Ubuntu 网络安全
在 Ubuntu 20.04 上安装和配置 Redis
在 Ubuntu 20.04 上安装和配置 Redis 的步骤如下:首先更新系统包,然后通过 `apt` 安装 Redis。安装后,启用并启动 Redis 服务,检查其运行状态。可选配置包括修改绑定 IP、端口等,并确保防火墙设置允许外部访问。最后,使用 `redis-cli` 测试 Redis 功能,如设置和获取键值对。
431 1
|
9月前
|
NoSQL Java Redis
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Redis 安装
本教程介绍在 VMware 虚拟机(CentOS 7)或阿里云服务器中安装 Redis 的过程,包括安装 gcc 编译环境、下载 Redis(官网或 wget)、解压安装、修改配置文件(如 bind、daemonize、requirepass 等设置)、启动 Redis 服务及测试客户端连接。通过 set 和 get 命令验证安装是否成功。适用于初学者快速上手 Redis 部署。
274 0
|
NoSQL 算法 Redis
docker高级篇(大厂进阶):安装redis集群
docker高级篇(大厂进阶):安装redis集群
919 24
|
12月前
|
NoSQL 关系型数据库 Redis
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
337 14