Redis的数据会被存储到一个名为数据库的容器中。一个Redis服务器可以包含多个数据库,默认情况下,会创建16个数据库。这些数据库用号码进行标志,第一个数据库为0号数据库。
切换到指定的数据库:SELECT index 获取所有与给定匹配符相匹配的键:KEYS pattern 以渐进方式迭代数据库中的键:SCAN cursor [MATCH pattern] [COUNT count] [TYPE type] 获取数据库包含的键值对数量:DBSIZE 将给定的键移动到另一个数据库:MOVE key db 清空当前数据库:FLUSHDB [async] 移除所有数据库:FLUSHALL [async] 互换数据库:SWAPDB dbX dbY | |
键 | 随机返回一个键: RANDOMKEY 对键的值进行排序:SORT key [BY pattern] [LIMIT offset count] [GET pattern GET pattern ...] 检查给定的键是否存在:EXISTS key [key ...] 查看键的类型:TYPE key 修改键名:RENAME | RENAMENX origin new 移除指定的键:DEL key [key ...] 以异步方式移除指定的键:UNLINK |
表 数据库基础命令
1 重点功能
1.1 匹配符
KEYS、SCAN等命令接受一个全局匹配符作为参数,然后返回数据库中与这个匹配符相匹配的键作为结果。
* | 匹配零个或任意多个任意字符。 |
? | 匹配任意的单个字符。 |
[] | 匹配给定字符串中的单个字符。 |
[?-?] | 匹配给定范围中的单个字符。 |
表 全局匹配符的作用
1.2 SCAN 渐进方式迭代数据库中的键
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]
cursor: 用于指定迭代时使用的游标,其记录了迭代的轨迹和进度。在开始一次新的迭代时,用户需要将游标设置为0。
count: 指定每次迭代期望获取的数量,其并不一定会严格指示返回结果。返回的结果可能大于或小于count 值。
type: 指定需要迭代键的类型。string、hash、list、set、zset、stream。
SCAN的迭代特征:
- 迭代会返回两个元素,下一次迭代所需的游标及查找到的键列表。只有当返回的迭代为0才代表迭代结束,否则就算迭代返回的键列表为空,也不一定表示迭代结束。
- 从迭代开始到迭代结束,一直存在于数据库中的键总会被返回。
- 如果一个键在迭代过程中被添加或删除,那么这个键是否会被返回是不确定的。
1.2.1 数据结构迭代命令
KEYS 会将符号条件的键全部返回给客户端,当数量比较大时,可能会导致服务器被阻塞。因此使用SCAN,逐进方式迭代符号条件的键。
在Redis的散列hash、集合set、及有序集合zset数据结构中,也存在一些可能导致服务器阻塞的命令,例如HKEYS、SMEMBERS、ZRANGE等。这些数据结构也提供了与SCAN命令类似的迭代命令:HSCAN、SSCAN及ZSCAN。
1.3 SORT 对键的值进行排序
SORT key [ALPHA] [BY pattern] [LIMIT offset count] [GET pattern GET pattern ...] [ASC | DESC]
SORT 命令可以对列表、集合或有序集合成员进行排序。
ALPHA:SORT 默认是进行数字值排序的,如果直接对字符串元素进行排序,那么将报错,ALPHA 指定通过字节进行排序。
1.3.1 获取外部键的值作为结果
SORT命令默认返回参与排序的元素值,而GET pattern来指示返回的值,其可以指定多个返回值。pattern参数的值可以是:
- 包含*符号的字符串:会把被排序的元素与*符号进行替换,构建出一个键名,然后使用GET命令去获取该键的值。
例:SORT fruits ALPHA GET *-price
图 集合fruits的元素
图 数据库中存储了不同水果价格的字符串键
图 SORT GET pattern 命令执行结果
- 包含*符号和->符号的字符串:获取散列中的键值。-> 左边的字符串为散列名(* 只能用在->左边),右边的字符串为字段名。调研HGET命令,从散列中获取指定字段的值。
图 数据库中存储水果信息的散列键
图 SORT 获取散列键值结果
执行步骤,a) 从fruits集合中获取了apple、mango等字符串,并对这些字符串进行字节排序,b)然后用这些字符串替代命令中的-> 左边的*号,构建出键名:apple-info、mango-info 等。 c)最后使用HGET命令获取这些被构建键名散列的inventory的字段值。
- 一个单独的#符号:返回被排序的元素本身。
SORT key 等效于 SORT key GET #。 如果单独使用是没意义的,一般只会在同时使用多个GET选项时,才使用GET #。
图 使用多个GET选项
1.3.2 使用外部键的值作为排序权重
在默认情况下,SORT命令将使用被排序元素本身作为排序权重,可以通过BY选项指定其他键的值作为排序的权重。BY 的pattern 与 GET pattern 的使用规则一样。