Redis 附加功能(一) - 数据库

server/2024/12/15 17:14:05/

 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的迭代特征:

  1. 迭代会返回两个元素,下一次迭代所需的游标及查找到的键列表。只有当返回的迭代为0才代表迭代结束,否则就算迭代返回的键列表为空,也不一定表示迭代结束。
  2. 从迭代开始到迭代结束,一直存在于数据库中的键总会被返回。
  3. 如果一个键在迭代过程中被添加或删除,那么这个键是否会被返回是不确定的。

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参数的值可以是:

  1. 包含*符号的字符串:会把被排序的元素与*符号进行替换,构建出一个键名,然后使用GET命令去获取该键的值。

例:SORT fruits ALPHA  GET *-price

图 集合fruits的元素

数据库中存储了不同水果价格的字符串键

图 SORT GET pattern 命令执行结果

  1. 包含*符号和->符号的字符串:获取散列中的键值。-> 左边的字符串为散列名(* 只能用在->左边),右边的字符串为字段名。调研HGET命令,从散列中获取指定字段的值。

数据库中存储水果信息的散列键

图 SORT 获取散列键值结果

执行步骤,a) 从fruits集合中获取了apple、mango等字符串,并对这些字符串进行字节排序,b)然后用这些字符串替代命令中的-> 左边的*号,构建出键名:apple-info、mango-info 等。 c)最后使用HGET命令获取这些被构建键名散列的inventory的字段值。

  1. 一个单独的#符号:返回被排序的元素本身。

SORT key 等效于 SORT key GET #。 如果单独使用是没意义的,一般只会在同时使用多个GET选项时,才使用GET #。

图 使用多个GET选项

1.3.2 使用外部键的值作为排序权重

在默认情况下,SORT命令将使用被排序元素本身作为排序权重,可以通过BY选项指定其他键的值作为排序的权重。BY 的pattern 与 GET pattern 的使用规则一样。


http://www.ppmy.cn/server/150397.html

相关文章

在Windows 10中使用SSH远程连接服务器(附花生壳操作方法)

SSH 在 linux 中是一种重要的系统组件,用户可以使用 SSH 来远程连接 linux 系统的计算机,或者传输文件。不过在 win10 以前,windows 并不原生支持 SSH,需要借助第三方工具来使用 SSH 功能。而实际上,微软在 2015 年就曾…

redis集群 服务器更换ip,怎么办,怎么更换redis集群的ip

redis集群 服务器更换ip,怎么办,怎么更换redis集群的ip 1、安装redis三主三从集群2、正常状态的redis集群3、更改redis集群服务器的ip 重启服务器 集群会down4、更改redis集群服务器的ip 重启服务器 集群down的原因5、更改redis集群服务器的ip后&#xf…

Python中定义抽象基类

What python中定义可以定义抽象类,和Java中的抽象类是一样的,不能被直接实例化,而是作为一个基类,主要用于定义一组接口规范,接口的实现在继承其的子类中完成,并且要求子类必须实现定义的所有接口&#xf…

es build 使用配置详解:快速、可扩展的 JavaScript 打包器

引言 es build 是一个快速、可扩展的 JavaScript 打包器和压缩器,它的目标是成为最快的打包器。它使用 Go 编写,可以在几乎瞬间内完成大多数项目的构建。在本文中,我们将深入了解 es build,并探讨其如何实现如此出色的性能。 什…

如何使用 Python 写入文本文件 ?

在Python编程中,写入文本文件是一项基本且重要的操作。 无论是生成日志文件、配置文件,还是进行数据输出,都需要用到这一技能。 下面,我将详细介绍如何使用Python写入文本文件,并提供一些实际开发中的建议和注意事项…

MySQL 记录锁+间隙锁防幻读方案

1. 什么是幻读? 定义: 幻读是指在事务过程中,一个事务执行了某些查询操作后,另一事务插入、删除或更新了满足查询条件的新数据,当第一个事务再次执行相同的查询操作时,结果集出现了“幻觉”&#…

docker tdengine windows快速体验

#拉取镜像 docker pull tdengine/tdengine:2.6.0.34#容器运行 docker run -d --name td2.6 --restartalways -p 6030:6030 -p 6041:6041 -p 6043:6043 -p 6044-6049:6044-6049 -p 6044-6045:6044-6045/udp -p 6060:6060 tdengine/tdengine:2.6.0.34#容器数据持久化到本地 #/va…

双重AEB:将基于规则的方法与多模态大型语言模型相结合,以实现有效的紧急制动(202410)

Dual-AEB: Synergizing Rule-Based and Multimodal Large Language Models for Effective Emergency Braking 双重AEB:将基于规则的方法与多模态大型语言模型相结合,以实现有效的紧急制动 Abstract Automatic Emergency Braking (AEB) systems are a c…