Redis入门到超神 - 01 Redis介绍与安装
发布日期:2021-06-30 12:37:32 浏览次数:3 分类:技术文章

本文共 3843 字,大约阅读时间需要 12 分钟。

序号 标题
01
02
03
04

文章目录


一、什么是Redis

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value的Nosql数据库,并提供多种语言的API。

redis是一个高性能的key-value存储系统,它支持存储的value类型包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。
与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 – 来源百度百科
Redis 官网

二、为什么要用Redis

Redis 是基于内存的数据库,不言而喻,那存取速度肯定是比基于硬盘的IO操作比较耗时的数据库(例如Mysql,Mongo等)快很多。所以一般用于缓存数据(比如热点数据,执行耗时较久但结果不经常变动的SQL的运行结果数据等),达到快速响应。

在高并发场景,如果所有的请求直接访问Mysql数据库,数据库可能会出现连接异常。如果使用redis做缓冲操作,先让请求访问到redis,没有命中再访问Mysql数据库,能减少Mysql数据库的压力。
当然,除了缓存作用,它还有其他作用,例如分布式锁;利用Redis原子性的自增操作实现计数器,用户点赞数,pv/uv,限速器等;利用zset实现排行榜;利用集合的交集,并集,差集实现共同好友,共同爱好等;还有一些高级操作Bitmaps,GEO实现地理位置定位等。

三、Redis线程模型

网上说 Redis 底层是一个单线程模型,其实是不严谨的。Redis 单线程指的是网络请求模块使用单线程,即一个线程处理所有网络请求,但是其他模块还是使用了多个线程。既然是单线程模型,那么CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存和网络带宽。

Redis基于Reactor模式开发了自己的网络事件处理器,称之为文件事件处理器(File Event Hanlder)。文件事件处理器由Socket、IO多路复用程序、文件事件分派器(dispather),事件处理器(handler)四部分组成。

IO多路复用程序同时监听多个socket,当被监听的socket准备好执行accept、read、write、close等操作时,与这些操作相对应的文件事件就会产生。IO多路复用程序会把所有产生事件的socket压入一个队列中,然后有序地每次仅一个socket的方式传送给文件事件分派器,文件事件分派器接收到socket之后会根据socket产生的事件类型调用对应的事件处理器进行处理。
在这里插入图片描述

四、Redis安装

Redis官方只有Linux版本,没有Windows版本。网上的Windows版本是apache的大牛对Linux版本进行改造和维护的。

Redis底层是采用NIO的多路IO复用机制,能实现高并发,并且线程安全。但是NIO在不同操作系统上实现不同,在Windows操作系统,使用select实现轮询,事件复杂度为O(n),会出现空轮询的情况,效率低下,并且默认对轮询的数据有一定的限制,很难支持上万的TCP连接。但是在Linux操作系统,是采用epoll实现事件驱动回调,不会出现空轮询,只对活跃的socket连接实现主动回调,事件复杂度为O(1),能够支持上万的高并发请求。
所以,我们推荐在Linux操作系统下安装Redis,当然如果只是学习使用,也可以在Windows上安装。

4.1 Linux下安装Redis

下载Redis安装包,并上传到Linux服务器,通过命令 tar -zxvf redis-5.0.10.tar.gz 解压。

/usr/local 目录下创建文件夹 mkdir redis,用于存放编译后的可执行文件以及配置文件等。

进入解压后的目录下(例如我这里是 /opt/redis-5.0.10 ),然后运行 make install PREFIX=/usr/local/redis 命令进行编译安装。

编译安装完成后,就会在 /usr/local/redis 目录下生成一个 bin 目录,此目录下有以下可执行文件。

在这里插入图片描述
进入 bin 目录,执行 ./redis-server 即可前台启动redis。(后续我们讲解如何修改配置文件后台启动)
在这里插入图片描述
再启动一个Linux连接客户端,进入bin目录,执行 ./redis-cli ,即可连接上redis,进行操作。
在这里插入图片描述

设置Redis后台启动,设置密码,设置允许外界访问。

首先将解压后的的 redis.conf 文件复制一份到安装目录下的 bin目录下。

cp /opt/redis-5.0.10/redis.conf /usr/local/redis/bin/

使用命令 vi redis.conf 打开复制后的文件,修改以下配置变量的值。

# yes代表后台启动daemonisze yes# 去除#号,修改密码,例如123456requirepass 123456# 注释掉bind 127.0.0.1,并且将protected-mode的值改为no,即可允许外界访问redis服务。#bind 127.0.0.1protected-mode no

当然,如果还允许外界访问Redis服务,还需要将Redis服务端口开放添加到防火墙中。

# 查询6379端口是否开放[root@192 bin]# firewall-cmd --query-port=6379/tcpno# 开放6379端口 (可以是一个端口范围,如1500-2000/tcp)[root@192 bin]# firewall-cmd --zone=public --add-port=6379/tcp --permanentsuccess# 重启防火墙[root@192 bin]# firewall-cmd --reloadsuccess# 再次查询6379端口是否开放,已开放[root@192 bin]# firewall-cmd --query-port=6379/tcpyes

使用命令 ./redis-server ./redis.conf 后台方式启动Redis服务。

在这里插入图片描述
再通过 ./redis-cli 命令连接redis后,如果没有进行密码验证,将无法进行操作,使用 AUTH 密码 进行密码验证之后才能操作。
在这里插入图片描述

4.2 Windows下安装Redis

百度云下载:

下载后解压到你想安装的目录下

在这里插入图片描述

4.2.1 前台启动 Redis 服务

在安装目录下启动 cmd 命令行窗口,然后输入redis-server.exe redis.windows.conf命令,回车。如果出现一个方形图标,即服务启动成功。

不过此种启动方式,是前台启动方式,只创建 Redis 临时服务,不会在 window Service 列表出现 Redis 服务名称和状态,此窗口关闭,Redis 服务会自动关闭。

在这里插入图片描述

通过客户端连接测试,在安装目录下再启动一个 cmd 命令行窗口,然后输入redis-cli.exe命令,回车。如下则连接成功。

在这里插入图片描述

修改端口和密码

在Redis的安装目录下找到 redis.windows-service.conf 文件,用文本编辑器打开。找到 port 所在行,把默认的端口更改,例如改为6380。找到 requirepass 所在行,回车另起一行,例如输入 requirepass 123456 ,这样Redis密码就为123456,设置好保存后文件,重启redis服务。

在这里插入图片描述

在这里插入图片描述

客户端连接测试。输入 redis-cli.exe -p 6380 连接,此时我们随便输入命令例如列出所有键命令 keys * ,会报错,因为我们还未输入密码验证。再输入 auth 123456 ,123456是我们刚设置的Redis密码。就可以执行命令了。

在这里插入图片描述

4.2.2 服务方式安装启动

前台方式启动redis服务,则需要保持打开命令行窗口启动着。窗口一关则服务停止。以下演示将 Redis 设置为 Windows下的服务,并在后台启动。

首先将 Redis 注册为服务,在 Redis 安装目录下启动一个cmd命令行窗口,然后输入 redis-server.exe --service-install redis.windows.conf --loglevel verbose 命令,回车。注意!!!一定要把临时服务关闭,否则安装不上。

在这里插入图片描述

再输入 redis-server.exe --service-start 命令,启动服务。

在这里插入图片描述

  • 启动服务:redis-server.exe --service-start
  • 暂停服务:redis-server.exe --service-stop
  • 卸载服务:redis-server.exe --service-uninstall

转载地址:https://javalib.blog.csdn.net/article/details/113805719 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Redis入门到超神 - 02 Redis为什么默认16个数据库
下一篇:静态代理,JDK动态代理,Cglib动态代理详解

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年05月05日 19时49分52秒