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

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 快速学习 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 里面去查找,查找完之后再把它写到里面。

相关实践学习
基于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
相关文章
|
1月前
|
NoSQL 数据可视化 Redis
Mac安装Redis
Mac安装Redis
37 3
|
1月前
|
NoSQL Ubuntu 安全
在Ubuntu 18.04上安装和保护Redis的方法
在Ubuntu 18.04上安装和保护Redis的方法
49 0
|
17天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
1月前
|
SQL 存储 NoSQL
Redis6入门到实战------ 一、NoSQL数据库简介
这篇文章是关于NoSQL数据库的简介,讨论了技术发展、NoSQL数据库的概念、适用场景、不适用场景,以及常见的非关系型数据库。文章还提到了Web1.0到Web2.0时代的技术演进,以及解决CPU、内存和IO压力的方法,并对比了行式存储和列式存储数据库的特点。
Redis6入门到实战------ 一、NoSQL数据库简介
|
1月前
|
NoSQL Redis 数据安全/隐私保护
Redis6入门到实战------ 二、Redis安装
这篇文章详细介绍了Redis 6的安装过程,包括下载、解压、编译、安装、配置以及启动Redis服务器的步骤。还涵盖了如何设置Redis以在后台运行,如何为Redis设置密码保护,以及如何配置Redis服务以实现开机自启动。
Redis6入门到实战------ 二、Redis安装
|
27天前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
24天前
|
NoSQL Redis 数据安全/隐私保护
深入探索利用Docker安装Redis
【8月更文挑战第27天】
61 2
|
29天前
|
缓存 NoSQL 关系型数据库
Redis学习总结
Redis学习总结
31 1
|
1月前
|
监控 NoSQL Redis
【redis】redis 单实例标准安装
【redis】redis 单实例标准安装
|
1月前
|
NoSQL 数据可视化 Linux
2022 年超详细步骤讲解 CentOS 7 安装Redis 。解决Redis Desktop Manager 图形化工具连接失败解决 ;connection failed处理。开机自启Redis
这篇文章提供了在CentOS 7上安装Redis的详细步骤,包括上传Redis安装包、解压安装、编译、安装、备份配置文件、修改配置以支持后台运行和设置密码、启动Redis服务、使用客户端连接Redis、关闭Redis服务、解决Redis Desktop Manager图形化工具连接失败的问题、设置Redis开机自启动,以及Redis服务的启动和停止命令。
2022 年超详细步骤讲解 CentOS 7 安装Redis 。解决Redis Desktop Manager 图形化工具连接失败解决 ;connection failed处理。开机自启Redis