Redis第一关预热

第一关 预热

1.1 安装Redis

Redis解释器下载链接
安装过程类似于python解释器
注意一点:添加环境变量打勾
在这里插入图片描述
在这里插入图片描述
redis图形化管理器下载链接
在这里插入图片描述
安装过程类似于python编辑器的pycharm。

安装过程可以类比于python的解释器和编辑器pycharm的过程。像Golang的安装过程也一样。
在这里插入图片描述
接着来到:
在这里插入图片描述

在这里插入图片描述

1.2 启动和停止Redis

安装完Redis后的下一步就是启动它。
在这之前首先需要了解Redis包含的可执行文件都有哪些?如图:
在这里插入图片描述
我们最常使用的两个程序是redis-server和redis-cli,其中redis-server是Redis的服务器,启动Redis即运行redis-server;而redis-cli是Redis自带的Redis命令行客户端,是学习Redis的重要工具。

1.2.1 启动Redis

启动Redis有直接启动和通过初始化脚本启动两种方式:
1.直接启动
直接运行redis-server即可启动Redis,十分简单:

$redis-server

Redis服务器默认会使用6379端口,通过–port参数可以自定义端口号:

redis-server --port 6380

2.通过初始化脚本启动Redis
这需要在Linux系统中通过初始化脚本启动Redis。

1.2.2 停止Redis

考虑到Redis有可能正在将内存中的数据同步到硬盘中,强行终止Redis进程可能会导致数据丢失。正确停止Redis的方式应该是向Redis发送SHUTDOWN命令,方法为:

$ redis-cli SHUTDOWN

当Redis收到SHUTDOWN命令后,会先断开所有客户端连接,然后根据配置执行持久化,最后完成退出。

1.3 Redis命令行客户端

本节将会介绍如何通过redis-cli向Redis发送命令,并且对Redis命令返回值的不同类型进行简单介绍。

注意操作步骤:
在这里插入图片描述

1.3.1 发送命令

通过redis-cli向Redis发送命令有两种方式:
第一种方式是将命令作为redis-cli的参数执行,比如在1.2.2节中用过的redis-cli SHUTDOWN。
redis-cli执行时会自动按照默认配置(服务器地址为127.0.0.1,端口号为6379)连接Redis,通过-h和-p参数可以自定义地址和端口号:

$ redis-cli -h 127.0.0.1-p 6379

Redis提供了PING命令来测试客户端与Redis的连接是否正常,如果连接正常会收到回复PONG。如:

$ redis-cli PING
PONG			#连接正常会收到回复PONG

第二种方式是不附带参数运行redis-cli,这样会进入交互模式,可以自由输入命令,例如:

C:\Users\YJG>redis-cli
127.0.0.1:6379> PING
PONG
127.0.0.1:6379> ECHO "Hello World"	#命令跟Linux极像
"Hello World"

这里我们采用第二种方式进入交互模式来自由输入命令。因为这种方式在要输入多条命令时比较方便。

1.3.2 命令返回值

在大多数情况下,执行一条命令后我们往往会关心命令的返回值。
命令的返回值有5种类型,对于每种类型redis-cli的展现结果都不同,下面分别说明。
1.状态回复
状态回复(status reply)是最简单的一种回复,状态回复直接显示状态信息。比如之前演示的对PING命令的回复PONG:

C:\Users\YJG>redis-cli
127.0.0.1:6379> PING
PONG

2.错误回复
当出现命令不存在或命令格式有错误等情况时Redis会返回错误回复(error reply)。错误回复以(error)开头,并在后面跟上错误信息。如执行一个不存在的命令:

127.0.0.1:6379> ERRORCOMMEND
(error) ERR unknown command 'ERRORCOMMEND'

3.整数回复
Redis虽然没有整数类型,但是却提供了一些用于整数操作的命令。
如递增键值的INCR命令会以整数形式返回递增后的键值。
除此之外,一些其他命令也会返回整数,如可以获取当前数据库中键的数量的DBSIZE命令等。
整数回复(integer reply)以(integer)开头,并在后面跟上整数数据:

127.0.0.1:6379> INCR foo
(integer) 1

4.字符串回复
字符串回复(bulk reply)是最常见的一种回复类型,当请求一个字符串类型键的键值或一个其他类型键中的某个元素时就会得到一个字符串回复。字符串回复以双引号包裹:

127.0.0.1:6379> GET foo
"1"

特殊情况是当请求的键值不存在时会得到一个空结果,显示为(nil)。如:

127.0.0.1:6379> GET noexists
(nil)

5.多行字符串回复
多行字符串回复(multi-bulk reply)同样很常见,如当请求一个非字符串类型键的元素列表时就会收到多行字符串回复。多行字符串回复中的每行字符串都以一个序号开头,如:

127.0.0.1:6379> KEYS *
1) "foo"

1.4 配置

Redis提供了一个配置文件的模板redis.conf,位于源代码目录的根目录中。

1.2.1节中我们通过redis-server的启动参数port设置了Redis的端口号,除此之外Redis还支持其他配置选项,如是否开启持久化、日志级别等。
由于可以配置的选项较多,通过启动参数设置这些选项并不方便,所以Redis支持通过配置文件来设置这些选项。
启用配置文件的方法是在启动时将配置文件的路径作为启动参数传递给redis-server,如:
在这里插入图片描述
通过启动参数传递同名的配置选项会覆盖配置文件中相应的参数,就像这样:
在这里插入图片描述
Redis提供了一个配置文件的模板redis.conf,位于源代码目录的根目录中。
注意:这里的redis.conf是把redis.windows.conf复制重命名为redis.conf的。读者照做即可。
在这里插入图片描述
例如:
在这里插入图片描述

除此之外还可以在Redis运行时通过CONFIG SET命令在不重新启动Redis的情况下动态修改部分Redis配置。就像这样:
在这里插入图片描述
并不是所有的配置都可以使用CONFIG SET命令修改,同样在运行的时候也可以使用CONFIG GET命令获得Redis当前的配置情况,例如:
在这里插入图片描述
其中第一行字符串回复表示的是选项名,第二行即是选项值。

1.5 多数据库

Redis是一个字典结构的存储服务器,而实际上一个Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中。这与我们熟知的在一个关系数据库实例中可以创建多个数据库类似,所以可以将其中的每个字典都理解成一个独立的数据库。每个数据库对外都是以一个从0开始的递增数字命名,Redis默认支持16个数据库【0-15】,可以通过配置参数databases来修改这一数字。客户端与Redis建立连接后会自动选择0号数据库,不过可以随时使用SELECT命令更换数据库,如要选择1号数据库:
在这里插入图片描述
然而这些以数字命名的数据库又与我们理解的数据库有所区别。首先Redis不支持自定义数据库的名字,每个数据库都以编号命名,开发者必须自己记录哪些数据库存储了哪些数据。另外Redis也不支持为每个数据库设置不同的访问密码,所以一个客户端要么可以访问全部数据库,要么连一个数据库也没有权限访问。最重要的一点是多个数据库之间并不是完全隔离的,比如FLUSHALL命令可以清空一个Redis实例中所有数据库中的数据。

综上所述,这些数据库更像是一种命名空间,而不适宜存储不同应用程序的数据。比如可以使用0号数据库存储某个应用生产环境中的数据,使用1号数据库存储测试环境中的数据,但不适宜使用0号数据库存储A应用的数据而使用1号数据库存储B应用的数据,不同的应用应该使用不同的Redis实例存储数据。由于Redis非常轻量级,一个空Redis实例占用的内存只有1MB左右,所以不用担心多个Redis实例会额外占用很多内存。

发布了511 篇原创文章 · 获赞 822 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/YJG7D314/article/details/104621603