Redis的安装,配置和使用

Redis 是什么?

说到Redis,我们的第一印象肯定是作为缓存中间件使用了,这样想可能太片面,我们按官网的介绍来看吧(http://www.redis.cn/),全面的认识下它的用途和功能

image-20211204142501295

这里的描述很简练和清晰了,因此,打算梳理的 Redis 相关知识点如下:

  • Redis 支持丰富的数据类型,每种类型的特点及应用场景;
  • Redis 支持持久化机制,有RDB、AOF等持久化方式;
  • Redis 多机数据库的实现,有复制(replication)、哨兵(Sentinel)和集群(cluster)等功能;
  • Redis 支持事务,Redis事务的ACID特性;
  • Redis 支持的其他独立功能,如发布/订阅、慢日志查询、Lua脚本、排序及二进制位数组等;
  • Redis 不仅仅是缓存中间件,也可以当做nosql数据库、消息队列等使用。

当然了,Redis 的优势也有必要说明一下,比如:

  • 读写性能很好,Redis能读的速度是110000次/s,写的速度是81000次/s,原因有多路复用机制、Resp协议、单线程、基于内存持久化操作等;
  • 数据结构丰富,Redis不仅支持strings、lists、hashes、sets、sorted sets等5种基本数据结构,也支持bitmaps、hyperLogLogs、geospatial等复杂数据结构;
  • 所有操作原子性,所有 Redis 的操作都是原子的,能确保当多个客户同时访问 Redis 服务器时,每个用户得到的是更新后的最新值;
  • 拥有多样的特性,比如:支持多种键过期删除策略、支持多机数据库的实现(主从复制、哨兵和集群等)、可当做消息队列使用等。

同时,Redis 作为缓存使用时,缺点也很明显,会出现以下几种问题:

  • 缓存和数据库双写一致性问题;
  • 缓存雪崩问题;
  • 缓存击穿问题;
  • 缓存的并发竞争问题。

而这些问题也都有对应的解决方法

关于Redis的数据持久化

Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。

由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF(append only file)持久化(原理是将Reids的操作日志以追加的方式写入文件)。

Redis版本选择及新版本特性

Redis 版本选择和下载(https://redis.io/download)时,一定要了解下官网提及的版本规则及更新信息

  • Redis 使用标准版本标记进行版本控制:major.minor.patchlevel。偶数的版本号表示稳定的版本, 例如 1.2,2.0,2.2,2.4,2.6,2.8,奇数的版本号用来表示非标准版本,例如2.9.x是非稳定版本,它的稳定版本是3.0。
  • Redis 4.0在2017年7月以GA的形式发布,新用户应该使用Redis 5,但Redis 4是目前最成熟的版本,并将在明年更新,直到Redis 6发布。
  • Redis 5.0是Redis的第一个重大更新版本,引入了新的流数据类型与消费者组,排序集阻塞pop操作,RDB中的LFU/LRU信息,Redis -cli中的集群管理器,活跃的碎片整理V2, HyperLogLogs改进和许多其他改进,2018年10月,Redis 5作为GA发布。
  • Redis 6.0引入了SSL,新的RESP3协议,acl,客户端缓存,无磁盘副本,I/O线程,更快的RDB加载,新的模块api和更多的改进。

经过一番比较后,最终选择使用Redis 5版本!,下载地址:https://download.redis.io/releases/

Windows 安装和使用 Redis

值得注意的是,从Redis3.x开始一直到目前的Redis6.x,官网一直没有提供Windows系统的 Redis安装包,只提供了Linux或Docker的。因此,没必要折腾去寻找能在Windows安装的zip包了。

另外,关于官网为什么不提供Windows的Redis安装包,原因可能是:

  • redis是基于单线程的高性能操作,而redis需要单线程轮询,Windows和Linux的轮询机制有所不同。
  • Windows使用的是selector,而Linux使用的是epoll,从性能上来说 epoll是高于selector 的,所以redis官方推荐使用linux版本。不过,window版本的redis是民间大神或者微软修改过的,可以在网上搜到相关的安装包使用,不过最新版本是不可能和官方保持一致的。

Linux 安装和使用 Redis

使用环境

  • CentOS 7.6
  • redis-5.0.14 【暂用单机版】

安装步骤

下载安装包

去Redis官网下载Linux安装包:

image-20211205141922934

也可以通过wget直接下载到虚拟机中

检查gcc环境

redis是c语言编写的, 因此下载之后还需要使用gcc(9.3+)进行编译和安装.

查看gcc版本是否在9.3以上, 如果没有则需要安装

如果发现gcc版本低于9.3, 我们需要升级到9.3及以上,如下:

需要注意的是scl命令切换gcc版本只是临时的,退出shell或重启就会恢复原系统gcc版本。如果要长期使用gcc 9.3的话:

编译redis

将下载的压缩包上传到/usr/local目录下,解压编译。

解压同时进入目录进行编译:

如果编译测试过程发生错误提示

则还需要安装tcl依赖

编译后产生一个新的src目录,将里面文件cp到/usr/local/bin/

进入src目录并安装Redis服务:

这样可以将Redis服务器和客户端命令安装到默认位置/usr/local/bin/下面
也可以在make install的时候指定一个前缀PREFIX,指定一个自定义的安装位置

至此,Redis安装完毕。

启动Redis

前台启动

启动效果:

image-20211204143602980

PS:这种启动方式如果关闭终端,redis就直接退出了,所以我们需要下面的后台启动!

后台启动

  1. 修改 redis.conf 文件

    1. daemonize no 改为 daemonize yes

    2. 注释掉 # bind 127.0.0.1

    3. 修改 protected-mode yes 改为 protected-mode no

    4. 如果需要设置密码添加 requirepass niit1234

    5. 修改后的部分示例如下:

  2. 启动和停止后台服务

  3. 通过命令查看进程和端口(即启动时显示的PID和PORT)

  4. 停止后台服务

作为系统服务

将配置文件复制到/etc/redis下

安装服务

安装完毕后使用chkconfig查看已经安装的服务, 并且此时redis服务已经在运行了.

可以看到, 新安装的服务名称为redis_6379, 并且已经配置了开机自动启动服务

也可以使用命令$ sudo chkconfig redis_6379 off关闭开机自动启动服务.

接下来就可以使用如下命令管理Redis系统服务了.

查看服务状态

关闭服务

这里无法关闭服务的原因是我们之前在redis.conf配置文件中设置了requirepasswd
所以解决办法

  1. 取消密码
  2. 修改服务启动文件

    修改完成后再次关闭服务就可以成功了

    启动服务

使用客户端连接服务

卸载Redis

停服务、删文件即可!

其他可能出现的问题及解决办法

执行service redis_6379 start命令时,出现提示:

删除这个pid即可

Redis性能测试

模拟N个客户端同时发出M个请求:

  • 通过redis-benchmark命令,测试结果如下:(每秒请求数)

使用Redis客户端

使用redi-cli客户端通过命令操作redis,这里先热身一下:

用可视化工具管理 Redis

名称: AnotherRedisDesktopManager

前身是一个工具叫做 RedisDesktopManager, 由于不再更新, 因此有人又制作了另外一款工具起名为AnotherRedisDesktopManager

下载:

GITHUB地址

exe可执行文件下载链接

使用

  1. 创建连接,输入HOST、端口(默认6379)密码(AUTH),连接名称(Name)点击OK,成功!

    image-20201214235231573

连接成功后可以使用AnotherRedisDesktopManager内置的Redis客户端工具与服务器进行交互:

image-20211205185535140

可视化界面可以方便查看和搜索那些已经存储的键值对.

image-20201214235712329

如果要清空所有缓存的数据, 可以点击flush DB选项

image-20211205185659993

当然还有很多其他功能, 这个软件和其他的数据库管理软件类似, 很快就可以上手了.

Views: 246

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注