当前位置:首页 > 问答 > 正文

想知道Redis里内容咋查?指令用法和深入了解一起看下

想知道Redis里内容咋查?这事儿其实不难,咱们不用那些让人头疼的专业词儿,就把它当成一个超级快的大柜子,咱们一起看看怎么打开抽屉找东西,这篇东西主要参考了Redis官方的命令文档和一些像“Redis实战”这类常见的入门指南,把核心的用法给你捋清楚。

第一步:先连上再说

你想翻柜子里的东西,总得先走到柜子面前吧?连接Redis就是这个意思,如果你是在自己的电脑上装的Redis,最简单的方法就是打开命令行或者终端,输入 redis-cli,这个命令就像一把钥匙,“咔哒”一声,你就连上本地的Redis服务了,如果Redis设了密码,你得先用 AUTH 你的密码 这个指令验明正身才行。

连上之后,你会看到命令提示符变成了 0.0.1:6379>,这说明你已经可以对这个“大柜子”发号施令了。

第二招:最基本的查看——KEYS 和 TYPE

柜子里东西那么多,我总得先知道有哪些抽屉吧?这时候就得用 KEYS 命令了,你输入 KEYS *,它会把你当前数据库里所有的“钥匙”(也就是 key,每个 key 对应存的一份数据)都列出来,星号 是个通配符,代表“所有”,你也可以模糊查找,KEYS user:*,它会找出所有以 “user:” 开头的 key。

但光知道 key 的名字还不够,你得知道这个抽屉里放的是哪种类型的东西,是字符串、是列表、还是哈希表?因为不同类型的东西,查看方法完全不同,这时候 TYPE 命令就派上用场了,你输入 TYPE 你的key名TYPE username,它会告诉你这个 key 对应的 value 是什么类型,是 string(字符串)、list(列表)、hash(哈希)、set(集合)还是 zset(有序集合),知道了类型,我们才能用对的工具去打开它。

第三招:针对不同类型的“查看”大法

想知道Redis里内容咋查?指令用法和深入了解一起看下

  1. 字符串(String):这是最简单的一种,就像一个小纸条,上面写着一串字,查看它用 GET 命令,比如你有个 key 叫 weather,存着“晴天”,那你输入 GET weather,屏幕上就会显示出“晴天”。

  2. 哈希(Hash):这个有点像一张登记表,里面有很多个字段(field)和对应的值(value),比如存一个用户信息,key 是 user:1001,它里面可能有 name(字段)对应“张三”(值),age 对应“30”,查看哈希有不同的细活儿:

    • HGETALL user:1001:把这整张表(所有字段和值)都给你翻出来。
    • HGET user:1001 name:只查看“姓名”这一个字段的值。
    • HKEYS user:1001:只看这张表里有哪些字段名(不看具体值)。
    • HVALS user:1001:只看这张表里所有的值(不看字段名)。
  3. 列表(List):这个像一个排队队伍,数据一个接一个按顺序放,查看列表主要用 LRANGE

    • 比如有个 key 叫 mytasks,存着待办事项。LRANGE mytasks 0 -1 的意思就是把队伍里从第0个到最后一个(-1代表最后)所有元素都显示出来,如果你想只看前3个,LRANGE mytasks 0 2
  4. 集合(Set):集合里的元素是乱七八糟放的,没有顺序,而且每个元素只出现一次,查看全部用 SMEMBERSSMEMBERS friends 会把所有朋友的名字(元素)都捞出来,但顺序是不确定的。

    想知道Redis里内容咋查?指令用法和深入了解一起看下

  5. 有序集合(ZSet):这个最厉害,它像是一个带分数的排行榜,每个元素都有一个分数(score),可以根据分数排序,查看用 ZRANGE

    • ZRANGE leaderboard 0 -1 会按分数从低到高列出所有元素。
    • ZRANGE leaderboard 0 -1 WITHSCORES 会在列出元素的同时,把它们的分数也显示出来。
    • 如果想看分数从高到低,就用 ZREVRANGE

第四招:更深入的了解——不只是“看”

光是看一眼可能不够,有时候我们还想知道更多细节,这时候这些命令能帮上忙:

  • 存在与否?:用 EXISTS key名EXISTS username,返回1表示存在,0表示没有这个key。
  • 还能活多久?:Redis可以给key设置过期时间,用 TTL key名 查看它还剩多少秒寿命,返回-2表示key已经没了;-1表示永不过期;其他数字就是剩余的秒数。
  • 看看长度/个数:对于非字符串类型,我们常想知道里面有多少个元素。
    • 列表长度用 LLEN key名
    • 集合元素个数用 SCARD key名
    • 哈希表字段数量用 HLEN key名

重要提醒和总结

最后得给你提个醒,KEYS * 这个命令虽然好用,但在你的“柜子”里key特别多(比如成百万上千万)的时候,最好别在生产环境乱用,因为它会一下子遍历所有key,可能会导致Redis服务器卡顿那么一小下,影响其他操作,如果真的需要扫描,可以考虑用 SCAN 命令,它是分批慢慢扫的,更温和。

查Redis就像开一个结构分明的大柜子:先 KEYS 看看有啥抽屉(key),再用 TYPE 确定抽屉里是哪种东西(数据类型),最后根据类型选用 GETHGETALLLRANGESMEMBERSZRANGE 这些具体的工具打开它,配合 EXISTSTTL 这些命令,你就能对里面的内容了如指掌了,多上手敲几次这些命令,熟悉之后你就会觉得特别简单直接。