【技术干货】高级测试需要知道的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,去掉前面的注释,并修改后面的密码即可,如:

(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 <host> -p <port> -a <password>

【参数说明】:

-h:指定连接的服务器名或IP。当连接为本地服务器时可以不写;

-p:指定连接的端口号。当端口为默认6379时,可以不写;

-a:指定密码。如果不指定密码,也可以在连接后通过auth ,如:

(2)可视化工具

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

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

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

③【基本使用】:

使用工具连接:

新增key:

其他基本使用:

4、常见的命令

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

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

(1)Strings(字符串)

【set和get的使用】:

① 设定指定的key值:

set <key> <value>

② 获取指定的key值:

get <key>

->【举个栗子】:

(2)Hashes(哈希)

【hset和hget的使用】:

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

hset <key> <field> <value>

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

hget <key> <field>

->【举个栗子】:

【hmset和hmget的使用】:

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

hmset <key> <field> <value> [field value ...]

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

hmget <key> <field> [field ...]

->【举个栗子】:

【hgetall的使用】:

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

hgetall <key>

->【举个栗子】:

【hexists的使用】:

hexists <key> <field>

->【举个栗子】:

(3)Lists(列表)

【lpush和lrange的使用】:

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

lpush <key> <value> [value ...]

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

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

lrange <key> <start> <stop>

->【举个栗子】:

(4)Sets(无序集合)

【sadd和smembers的使用】:

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

sadd <key> <member> [member ...]

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

smembers <key>

->【举个栗子】:

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

【scard的使用】:

获取集合的成员数:

scard <key>

->【举个栗子】:

(5)Sorted Sets(有序集合)

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

【zadd和zrange的使用】:

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

zadd <key> <score> <member> [score member ...]

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

zrange <key> <start> <stop> [withscores]

【参数说明】:

score:给元素指定分数,分数从小到大排序;

start、stop:指定元素开始和结束的下标值;

withscores:指定后可以获取元素的同时获取到分数;

->【举个栗子】:

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

zcard <key>

->【举个栗子】:

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

zscore <key> <member>

->【举个栗子】:

(6)其他通用命令

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

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

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

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

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

  ② ?:通配单个字符;

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

(5)rename <key> <rename>:改key名;

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

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

(8)move <key> <db>:将key移动到指定数据库;

(9)select <db_index>:切换数据库;

(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等热门测试技术,让您在实战中提升自我。在手机上阅读所有文章,随时随地都能学习。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容