Redis常用命令

2018/02/05 Redis

Redis常用命令

Redis数据库

但无论是字符串键、散列键还是列表键,都会被存储到一个名为数据库的容器中。因为Redis是一个键值对数据库服务器,所以它的数据库与之前介绍过的散列键一样,都可以根据键的名字对数据库中的键值对进行索引。

Redis为数据库提供了非常丰富的操作命令,通过这些命令,用户可以:

  • 指定自己想要使用的数据库。
  • 一次性获取数据库包含的所有键,迭代地获取数据库包含的所有键,或者随机地获取数据库中的某个键。
  • 根据给定键的值进行排序。
  • 检查给定的一个或多个键,看它们是否存在于数据库当中。
  • 查看给定键的类型。
  • 对给定键进行重命名。
  • 移除指定的键,或者将它从一个数据库移动到另一个数据库。
  • 清空数据库包含的所有键。
  • 交换给定的两个数据库。

SELECT:切换至指定的数据库

一个Redis服务器可以包含多个数据库。在默认情况下,Redis服务器在启动时将会创建16个数据库:这些数据库都使用号码进行标识,其中第一个数据库为0号数据库,第二个数据库为1号数据库,而第三个数据库则为2号数据库,以此类推。

Redis虽然不允许在同一个数据库中使用两个同名的键,但是由于不同数据库拥有不同的命名空间,因此在不同数据库中使用同名的键是完全没有问题的,而用户也可以通过使用不同数据库来存储不同的数据,以此来达到重用键名并且减少键冲突的目的。

比如,如果我们将用户的个人信息和会话信息都存放在同一个数据库中,那么为了区分这两种信息,程序就需要使用user::::profile格式的键来存储用户信息,并使用user::::session格式的键来存储用户会话;但如果将这两种信息分别存储在0号数据库和1号数据库中,那么程序就可以在0号数据库中使用user::格式的键来存储用户信息,并在1号数据库中继续使用user::格式的键来存储用户会话。

当用户使用客户端与Redis服务器进行连接时,客户端一般默认都会使用0号数据库,但是通过使用SELECT命令,用户可以从当前正在使用的数据库切换到自己想要使用的数据库:

SELECT db

SELECT命令在切换成功之后将返回OK。

举个例子,当我们以默认方式启动redis-cli客户端时,redis-cli将连接至服务器的0号数据库:如果我们想要从0号数据库切换至3号数据库,那么只需要执行以下命令即可:

redis> SELECT 3
OK
redis[3]>

客户端提示符末尾的[3]表示客户端现在正在使用3号数据库。注意,redis-cli在使用默认的0号数据库时不会打印出数据库号码。

KEYS:获取所有与给定匹配符相匹配的键

KEYS命令接受一个全局匹配符作为参数,然后返回数据库中所有与这个匹配符相匹配的键作为结果:

KEYS pattern

举个例子,如果我们想要获取数据库包含的所有键,那么可以执行以下命令:

redis> KEYS *
1) "fruits"
2) "user::12312::profile"
3) "user::ip"
4) "user::id"

如果我们想要获取所有以user::为前缀的键,那么可以执行以下命令:

redis> KEYS user::*
1) "user::12312::profile"
2) "user::ip"
3) "user::id"

如果数据库中没有任何键与给定的匹配符相匹配,那么KEYS命令将返回一个空值:

redis> KEYS article::*
(empty list or set)    -- 数据库中没有任何以article::为前缀的键

SCAN:以渐进方式迭代数据库中的键

因为KEYS命令需要检查数据库包含的所有键,并一次性将符合条件的所有键全部返回给客户端,所以当数据库包含的键数量比较大时,使用KEYS命令可能会导致服务器被阻塞。

为了解决这个问题,Redis从2.8.0版本开始提供SCAN命令,该命令是一个迭代器,它每次被调用的时候都会从数据库中获取一部分键,用户可以通过重复调用SCAN命令来迭代数据库包含的所有键:

SCAN cursor

SCAN命令的cursor参数用于指定迭代时使用的游标,游标记录了迭代的轨迹和进度。在开始一次新的迭代时,用户需要将游标设置为0:

Search

    微信好友

    博士的沙漏

    Table of Contents