【技术】高级测试需要知道的Redis知识--基础篇

        最近笔者在面试中发现,大部分应聘者都知道公司有使用到Redis,但是都不知道Redis的具体用法,平时都只是关注界面的展示,未具体了解底层数据的存储,以及如何获取数据等。因此,今天我带大家了解Redis的基本知识,以便更好的开展测试工作。

1、什么是Redis?

Redis是一个高性能key-value数据库,也是一个NOSQL类型数据库,是为解决高并发、高扩展、大数据存储等一系列的问题而产生的数据库解决方案,是一个非关系型的数据库

2、如何安装?

(1)Windows下安装

    Redis官方不建议在Windows下使用Redis,所以官网没有Windows版本。但是,微软团队维护了开源的Windows版本,供普通测试开发练习使用。

① 【下载地址】:

https://github.com/MicrosoftArchive/redis/releases

(安装步骤较简单,直接按照步骤下一步安装即可,此处忽略)

② 【启用Redis服务】:

安装目录下找到redis-server.exe,双击即可启用服务。

③ 【密码设置】:

Redis默认是没有设置密码,如需密码验证,则需要修改配置文件redis.windows.conf,找到requirepass,去掉前面的注释,并修改后面的密码即可,如:

【技术】高级测试需要知道的Redis知识--基础篇_第1张图片

(2)Linux下安装

①【下载地址】:

    http://redis.io/download

②【安装命令】:

wget https://download.redis.io/releases/redis-6.2.6.tar.gz

tar xzf redis-6.2.6.tar.gz

cd redis-6.2.6

make

执行完 make 命令后,安装完成!

③【启用Redis服务】:

    在安装目录下找到src目录,执行命令:

./redis-server

【注意】:这种方式启动Redis使用的是默认配置。也可以通过启动参数指定配置文件。使用下面命令启动:

./redis-server ../redis.conf

如果不想安装情况下,可以使用Redis提供的在线练习平台https://try.redis.io/,在线即可直接使用命令进行练习。

3、如何连接?

(1)命令行(以Windows为例

①【连接命令】:

redis-cli.exe -h -p -a

【技术】高级测试需要知道的Redis知识--基础篇_第2张图片

【参数说明】:

  • -h:指定连接的服务器名或IP。当连接为本地服务器时可以不写;
  • -p:指定连接的端口号。当端口为默认6379时,可以不写;
  • -a:指定密码。如果不指定密码,也可以在连接后通过auth ,如:

【技术】高级测试需要知道的Redis知识--基础篇_第3张图片

(2)可视化工具

        管理Redis的可视化客户端目前较流行的有三个:Redis Desktop Manager、Redis Client 、 Redis Studio。以下以Redis Desktop Manager为例。

①【下载地址】:https://github.com/uglide/RedisDesktopManager/releases/tag/0.9.3

②【安装方式】:双击安装非常简单。

③【基本使用】:

使用工具连接:

【技术】高级测试需要知道的Redis知识--基础篇_第4张图片

新增key:

【技术】高级测试需要知道的Redis知识--基础篇_第5张图片

其他基本使用:

【技术】高级测试需要知道的Redis知识--基础篇_第6张图片

4、常见的命令

常见数据类型:Strings(字符串)、Hashes(哈希)、Lists(列表)、Sets(集合)、Sorted Sets(有序集合)

接下来我将分别介绍这几种数据类型对应常用的命令~

(1)Strings(字符串)

【set和get的使用】:

① 设定指定的key值:

set

② 获取指定的key值:

get

->【举个栗子】:

(2)Hashes(哈希)

【hset和hget的使用】:

① 为key中的哈希表的field字段的value赋值:

hset

② 获取key中的哈希表的field字段的值value:

hget  

->【举个栗子】:

【hmset和hmget的使用】:

① 将多个 field-value对设置到哈希表中:

hmset    [field value ...]

② 获取key中的哈希表的field字段的值:

hmget   [field ...]

->【举个栗子】:

【技术】高级测试需要知道的Redis知识--基础篇_第7张图片

【hgetall的使用】:

获取key中哈希表的所有的域和值:

hgetall 

->【举个栗子】:

【技术】高级测试需要知道的Redis知识--基础篇_第8张图片

【hexists的使用】:

hexists

->【举个栗子】:

【技术】高级测试需要知道的Redis知识--基础篇_第9张图片

(3)Lists(列表)

【lpush和lrange的使用】:

① 将一个或多个值插入到列表头部:

lpush [value ...]

注意:插入到列表尾部使用rpush

② 获取列表指定范围内的元素:

lrange   

->【举个栗子】:

【技术】高级测试需要知道的Redis知识--基础篇_第10张图片

(4)Sets(无序集合)

【sadd和smembers的使用】:

① 向集合添加一个/多个成员:

sadd [member ...]

② 返回集合中的所有成员:

smembers 

->【举个栗子】:

【技术】高级测试需要知道的Redis知识--基础篇_第11张图片

    在上面的示例中,添加了 4 个元素。但是使用smembers命令只检索了 3 个元素,因为有一个元素aa1是重复的。

【scard的使用】:

获取集合的成员数:

scard

->【举个栗子】:

【技术】高级测试需要知道的Redis知识--基础篇_第12张图片

(5)Sorted Sets(有序集合)

    每个元素都会关联一个double类型的分数。Sorted Sets是通过分数为集合的成员进行从小到大的排序。

【zadd和zrange的使用】:

① 向集合添加成员,或更新已存在成员的分数:

zadd [score member ...]

② 返回有序集合中指定成员的索引:

zrange [withscores]

【参数说明】:

  • score:给元素指定分数,分数从小到大排序;
  • start、stop:指定元素开始和结束的下标值;
  • withscores:指定后可以获取元素的同时获取到分数;

->【举个栗子】:

【技术】高级测试需要知道的Redis知识--基础篇_第13张图片

③ 获取有序集合的成员数:

zcard

->【举个栗子】:

④ 获取有序集中成员的分数值:

zscore

->【举个栗子】:

(6)其他通用命令

(1)exists [key ...]:测试key是否存在,存在返回1,不存在返回0;

(2)del [key ...]:删除key;

(3)type 返回key的数据类型;

(4)keys 匹配满足的key,允许模糊查询,key有3个通配符:

  ① *:通配任意多个字符;

  ② ?:通配单个字符;

  ③ []:通配括号内的某1个字符;

(5)rename 改key名;

(6)dbsize:当前数据库key的数量;

(7)expire 设置key过期时间,key 过期后将不再可用(单位以秒计);

(8)move 将key移动到指定数据库;

(9)select 切换数据库;

(10)flushdb:删除当前数据库的所有key;

(11)flushall:删除所有数据库的key。

5、生产环境不能使用危险的命令

(1)keys *

    获取Redis中所有的key。虽然在小数据量情况下使用没问题,但当数据量大会导致Redis锁住及CPU飙升。

(2)flushdb

    删除 Redis 中当前所在数据库中的所有记录。

(3)flushall

    删除 Redis 中所有数据库中的所有记录,不只是当前所在数据库。

(4)config

    修改 Redis 配置。

    以上命令千万不要执行(不过一般情况下,运维/DBA会对危险命令进行限制和禁用,但是也不要去尝试,万一没有做限制呢~)。

    如果你之前没有接触过Redis或只是简单了解过,那么,这篇文章一定要去实践,上面的知识点是必须掌握的。另外,Redis还涉及其他重要的知识点,比如高可用(主从、哨兵、分片集群)、持久化(RDB、AOF)等,这些知识将在后续文章与大家分享~


【爱测试·爱分享】

更多内容可关注公众号:测试专享

专注于性能、自动化、接口测试、中间件等技术,与您分享测试技术点滴,内容涵盖:Jmeter、PTS、Python、Selenium、小程序自动化、Linux等热门测试技术,让您在实战中提升自我。在手机上阅读所有文章,随时随地都能学习。


你可能感兴趣的:(技术专项,redis,数据库,nosql,功能测试,软件测试)