Code前端首页关于Code前端联系我们

什么是Redis?使用场景有哪些? Redis7.0安装指南

terry 2年前 (2023-09-26) 阅读数 54 #数据库

Redis是什么?使用场景有哪些?Redis7.0安装教程

2022年1月31日起,官方已经发布了文件Redis7.0-rc1,目前已经发布到7.0.5版本。许多开发人员仍然只知道Redis 5.x或6.x版本,还不了解Redis 7.0。本系列教程将帮助您全面学习Redis7.0相关的知识点。环境搭建、10种主要数据类型、事件、发布排序、主从复制、哨兵、集群等信息。本教程最大的特点是不仅总结了枯燥的理论知识,而是理论知识+基础知识时间+情景面试问题分析。还分享了一些Redis相关的技术栈等内容Redis是什么?使用场景有哪些?Redis7.0安装教程

今天给大家分享一下Redis的基本知识,适合在哪些场景下使用,以及如何快速搭建Redis环境。什么是Redis? Redis 提供字符串、哈希、列表、数组、带范围查询的排序数组、位图、超级日志、地理空间索引和流等数据结构。 Redis 具有内置复制、Lua 脚本、LRU 驱逐、事件和各种级别的磁盘持久性,并通过 Redis Sentinel 和 Redis 集群的自动分区提供高可用性。

为什么会出现Redis这样的内存数据库?这要从 Redis 的作者 antirezs 说起。

2008年,一位来自意大利西西里岛的年轻人,名叫antirez,创建了游客信息网站LLOOGG.COM。有时我们需要了解网站的访问权限,例如访问者的IP地址、操作系统、浏览器、使用的搜索词、地区、访问的网站地址等。国内有很多网站提供此功能,例如CNZZ 、国外的百度统计和谷歌的Google Analytics。我们不需要自己编写任何代码来实现这个功能。我们需要做的就是在全局页脚中嵌入一些 JS 代码。当页面打开时,访问者的信息会自动发送到这些网站统计服务器,之后我们登录到后台系统。您可以查看信息。 Redis是什么?使用场景有哪些?Redis7.0安装教程

LLOOGG.COM 提供此功能,因为它最多可以查看 10,000 条最近的浏览记录。这种情况下,需要为每个网站创建一个列表,不同网站的访问记录记入不同的列表中。如果列表长度超过用户定义的长度,则必须删除最旧的记录(先进先出)。

随着LLOOGG.COM用户数量的增加,其维护的列表数量也随之增加,保存的新请求和删除的最旧请求的数量也会增加。 LLOOGG.COM最初使用的数据库是MySQL。正如您可以想象的那样,每次条目和删除都需要对磁盘进行读写。因为数据量和并发量太大,这种情况下无论怎么优化数据库都会很困难。它不再起作用了。

鉴于限制数据库性能的最后一个瓶颈是磁盘,antirez 将放弃磁盘并实现原型列表结构。将数据放在内存而不是磁盘中可以极大地改进列表推和拉。流行效率。 antirez意识到这个想法实际上可以解决这个问题,因此他用C重写了内存数据库并添加了持久化功能。 2009年,Redis诞生了。从最初仅支持列表的数据库,到现在支持多种数据类型并提供一系列高级功能,Redis 已经成为在全球范围内广泛使用的开源项目。

Redis的全称是远程词典服务器。其默认服务端口为6379。有一种说法是为Redis选择端口号6379。 6379是电话按键上MERZ号码对应的号码,MERZ取自意大利歌手Alessia Merz的名字。阿莱西娅·梅尔茨 (Alessia Merz) 是一位意大利舞者和演员。 Redis 作者 Antirez(意大利人)早年看过电视节目,发现节目中 Merz 的一些话既愚蠢又可笑。 Antirez 想要制作“模因”用于与朋友的日常交流,因此他想出了“MERZ”这个词来形容愚蠢。 “愚蠢”的意思是一样的。后来,Antirez重新定义了“MERZ”,将其描述为“技术上的高价值,包括技巧、耐心和工作,但仍保持简单的本质”。当需要选择一个数字作为 Redis 的默认端口号时,Antirez 没有多想,就使用了数字 6379,它对应于手机键盘上的“MERZ”数字。 Redis是什么?使用场景有哪些?Redis7.0安装教程

如果你想关注更多Redis相关内容,你不仅可以使用官网地址,还可以使用Redis作者的博客和GitHub地址。

1。官方地址:https://redis.io/

2。 GitHub地址:https://github.com/antirez

3。博客地址:http://antirez.com/latest/0

Redis使用场景

Redis基于内存操作,具有高可用性和高性能。它还提供多种数据类型。一般来说,可以在以下几种情况下使用:

1。数据缓存。项目初期,数据通常存储在MySQL、Oracle等关系型数据库中,所有数据读写都是基于磁盘操作。随着业务的扩展,系统通过传统的数据读取方式遇到读写瓶颈。针对这种情况,将数据存储在内存中,所有的读操作都通过内存进行查询,提高了系统的数据检索能力。对于高并发业务场景下的数据读取,也可以先将数据写入内存,然后异步持久化到磁盘,提高系统的并发能力。

2。保存用户登录信息。用户登录认证通常可以基于cookie和jwt来实现。 Cookie是基于文件存储的,Cookie涉及到跨域和分布式架构问题。由于jwt是基于客户端存储的解决方案,服务器无法直接控制登录的状态。由于Redis具有分布式部署架构,因此可以很好地解决分布式架构的token认证、用户登录方式等问题。同时,登录信息存储在Redis中,每次读取都是从内存中进行,这也提高了整个系统的性能。

3。闪购场景。在闪购场景下,系统的并发能力非常高。在这种场景下,将产品数据存储在Redis中可以提高系统的查询能力,同时减轻MySQL的压力。将所有产品库存存储在 Redis 中。由于Redis采用单线程架构,因此也可以解决产品超卖的问题。

4。用户登录。您可以使用bitmap数据类型存储用户登录到Redis,然后通过异步线程将数据保存到MySQL。它不仅节省内存,还提供系统读写能力。

5。消息队列。 Redis 提供 list 数据类型。该技能用在消息队列中,也可以用在堆栈等场景中。从Redis 5.0开始,还包含了流数据类型,提高了消息队列的可靠性。

6。社交场景。Redis提供了两种集合数据类型(集合排序),可以用于点单、好友推荐等场景。

7。附近推荐。 Redis 提供了用于位操作的数据类型 GEO。可以根据用户当前的经纬度计算附近的酒店、商场等场所的搜索和推荐功能。

8。共享锁。在分布式架构中,需要对共享数据(例如产品闪购)进行读写操作。为了保证数据的一致性,通常会采用分布式锁。 Redis可以非常简单地实现分布式锁定操作。您可以直接使用setnx键值+expiretime函数。要实现原子操作,也可以直接使用lua

Redis是什么?使用场景有哪些?Redis7.0安装教程

Redis 有哪些优势

作为内存数据库,Redis 拥有非常好的读写性能。这是 Redis 和 memcached 之间的比较。

1。螺纹图案。 Memcached实现多线程模式,而Redis实现单线程模式。虽然Redis 6.0版本及更高版本支持多线程,但这里的多线程仅用于处理网络IO。实际的数据操作仍然是单线程模式。 。单线程执行(减少上下文切换、锁争用等问题)。

2。韧性。对于内存数据库,所有数据都存储在内存中。当服务出现异常时,服务宕机导致数据丢失。 Redis支持将数据保存到磁盘。当服务故障重新启动时,数据会从磁盘重新加载到内存。 Redis 支持两种持久数据存储方法。一种是快照模式(RDB),另一种是日志模式(ROF)。

3。分散式架构。 Redis支持主从复制、哨兵、集群等高可用、高可靠的架构。它还具有较低的学习成本。

4。数据类型。 Redis 有五种基本数据类型以及其他几种数据类型; Memcached 只有简单的字符串类型。

环境搭建

以上已经对Redis的理解有了一个大概的介绍。接下来我们正式进入第一阶段的学习,搭建Redis环境。如果不想创建环境,也可以使用官方提供的Web界面cli工具,但有一定的局限性。

Redis支持Linux、Mac和Windows环境,但官网不建议在Windows上使用Redis,因此无法充分发挥Redis的优势。在本教程中,所有功能都是针对Mac环境构建的。 Linux环境和Mac环境几乎是一样的,我们并不太关注两者的区别。

Mac 操作系统具有 brew 软件包管理工具,Linux 具有 yum 或 。由于这种方法非常简单,下面分别介绍源码的编译和安装。

Redis是什么?使用场景有哪些?Redis7.0安装教程

通过Redis官方GitHub地址下载Redis7.0.0版本。软件通常有奇数版本和偶数版本。在选择版本时,我们也更喜欢偶数版本,因为偶数版本比奇数版本更稳定。

// 下载
cd ~ && wget https://github.com/redis/redis/archive/7.0.0.tar.gz
// 解压
tar -zxvf 7.0.0.tar.gz

解压后,我们可以查看源码中大概有哪些文件。

[root@VM-16-3-centos redis-7.0.0]# ll
总用量 252
-rw-rw-r--  1 root root  27744 4月  27 2022 00-RELEASENOTES
-rw-rw-r--  1 root root     51 4月  27 2022 BUGS
-rw-rw-r--  1 root root   5026 4月  27 2022 CONDUCT
-rw-rw-r--  1 root root   2634 4月  27 2022 CONTRIBUTING
-rw-rw-r--  1 root root   1487 4月  27 2022 COPYING
drwxrwxr-x  7 root root   4096 4月  27 2022 deps
-rw-rw-r--  1 root root     11 4月  27 2022 INSTALL
-rw-rw-r--  1 root root    151 4月  27 2022 Makefile # 编译文件
-rw-rw-r--  1 root root   6888 4月  27 2022 MANIFESTO
-rw-rw-r--  1 root root  22435 4月  27 2022 README.md
-rw-rw-r--  1 root root 106547 4月  27 2022 redis.conf # 默认配置文件
-rwxrwxr-x  1 root root    279 4月  27 2022 runtest
-rwxrwxr-x  1 root root    283 4月  27 2022 runtest-cluster # 集群工具
-rwxrwxr-x  1 root root   1578 4月  27 2022 runtest-moduleapi
-rwxrwxr-x  1 root root    285 4月  27 2022 runtest-sentinel
-rw-rw-r--  1 root root   1695 4月  27 2022 SECURITY.md
-rw-rw-r--  1 root root  13924 4月  27 2022 sentinel.conf # 哨兵默认配置文件
drwxrwxr-x  4 root root   4096 4月  27 2022 src #源码文件
drwxrwxr-x 11 root root   4096 4月  27 2022 tests
-rw-rw-r--  1 root root   3055 4月  27 2022 TLS.md
drwxrwxr-x  8 root root   4096 4月  27 2022 utils

接下来,在源代码路径下运行安装。

make && make install

等待几分钟后,会出现如下界面,表示Redis已经安装成功。

Hint: It's a good idea to run 'make test' ;)

INSTALL redis-server
INSTALL redis-benchmark
INSTALL redis-cli

Redis相关的客户端工具和服务端工具默认安装在/usr/local/bin目录下。

[root@VM-16-3-centos bin]# cd /usr/local/bin
[root@VM-16-3-centos bin]# ll
总用量 27896
-rwxr-xr-x 1 root root      383 12月 10 2019 chardetect
-rwxr-xr-x 1 root root      389 12月 10 2019 cloud-init
-rwxr-xr-x 1 root root     1781 12月 10 2019 cloud-init-per
-rwxr-xr-x 1 root root      399 12月 10 2019 easy_install
-rwxr-xr-x 1 root root      407 12月 10 2019 easy_install-3.6
-rwxr-xr-x 1 root root     1005 12月 10 2019 jsondiff
-rwxr-xr-x 1 root root     3663 12月 10 2019 jsonpatch
-rwxr-xr-x 1 root root     1839 12月 10 2019 jsonpointer
-rwxr-xr-x 1 root root      392 12月 10 2019 jsonschema
-rwxr-xr-x 1 root root  6976488 2月  26 15:48 redis-benchmark
lrwxrwxrwx 1 root root       12 2月  26 15:48 redis-check-aof -> redis-server
lrwxrwxrwx 1 root root       12 2月  26 15:48 redis-check-rdb -> redis-server
-rwxr-xr-x 1 root root  7234616 2月  26 15:48 redis-cli
lrwxrwxrwx 1 root root       12 2月  26 15:48 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 14307984 2月  26 15:48 redis-server

1。 redis-server:Redis服务器工具,启动Redis服务时需要使用该工具。

2。 redis-cli:Redis 客户端工具。使用命令访问Redis时需要用到该工具。

3。 redis-check-rdb:永久RDB文件检测。当RDB文件出现问题时,可以使用该工具进行检测并恢复。

4。 redis-check-aof:永久 AOF 文件检测。当AOF文件出现问题时,可以使用该工具进行检测并恢复。

5。 redis-sentinel:Redis哨兵工具。使用哨兵模式时,需要使用该工具来启动哨兵。

6。 redis-benchmark:Redis压缩工具,可用于模拟Redis性能。

安装成功后,我们还可以查看当前安装的Redis版本。

[root@VM-16-3-centos bin]# redis-server -v
Redis server v=7.0.0 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=34dee89a8e7e24d2

启动服务

服务启动时,我们可以指定配置文件,也可以不指定。如果不指定配置,则使用redis-server时使用默认配置文件。

1。无需配置文件即可启动。只需使用 redis-server 命令即可。如果看到如下界面,则说明Redis服务已经正常启动。但也有一个问题。 Redis 服务在前台运行。当我们关闭 shell 窗口时,服务就会终止。因此,建议使用指定的配置文件。

[root@VM-16-3-centos bin]# redis-server 
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 7.0.0 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                  
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 615368
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           https://redis.io       
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

615368:M 26 Feb 2023 16:02:04.530 * Ready to accept connections

2。首先配置一个配置文件。 Redis源码目录下有一个文件redis.conf。您可以直接编辑该文件,也可以将文件复制到特定目录稍后再编辑。在文件中找到配置项daemonize,并将其值更改为yes

daemonize yes

接下来运行redis-server ./redis.conf时,界面可能没有输出信息。我们可以使用 redis-cli 命令来测试连接。

[root@VM-16-3-centos redis-7.0.0]# redis-cli 
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379>

通过上图的介绍,我们可以看到Redis可以正常链接。谨此,Redis 环境安装、基本测试和连接已完成。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门