redis-操作数据库

0 序言

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

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

存储值命名空间

redis的key的命名规范
1.建议全部大写

2.key不能太长也不能太短,键名越长越占资源,太短可读性太差

3.key 单词与单词之间以  : 分开

1 select 切换至指定数据库

// db 代表 0-15SELECT db  

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

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

        KEYS pattern

示例:

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

该命令是一个迭代器,它每次被调用的时候都会从数据库中获取一部分键,用户可以通过重复调用SCAN命令来迭代数据库包含的所有键:

        SCAN cursor

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

        SCAN 0

SCAN命令的执行结果由两个元素组成:

●第一个元素是进行下一次迭代所需的游标,如果这个游标为0,那么说明客户端已经对数据库完成了一次完整的迭代。

●第二个元素是一个列表,这个列表包含了本次迭代取得的数据库键;如果SCAN命令在某次迭代中没有获取到任何键,那么这个元素将是一个空列表。

关于SCAN命令返回的键列表,有两点需要注意:

●SCAN命令可能会返回重复的键,用户如果不想在结果中包含重复的键,那么就需要自己在客户端中进行检测和过滤。

●SCAN命令返回的键数量是不确定的,有时甚至会不返回任何键,但只要命令返回的游标不为0,迭代就没有结束。

SCAN命令的迭代保证针对数据库的一次完整迭代(full iteration)以用户给定游标0调用SCAN命令开始,直到SCAN命令返回游标0结束。SCAN命令为完整迭代提供以下保证:

●从迭代开始到迭代结束的整个过程中,一直存在于数据库中的键总会被返回。

●如果一个键在迭代的过程中被添加到数据库中,那么这个键是否会被返回是不确定的。

●如果一个键在迭代的过程中被移除了,那么SCAN命令在它被移除之后将不再返回这个键,但是这个键在被移除之前仍然有可能被SCAN命令返回。

●无论数据库如何变化,迭代总是有始有终的,不会出现循环迭代或者其他无法终止迭代的情况。

完整迭代示例:只要返回的游标不为0,迭代就没有结束,返回的游标是下一次迭代要用的

指定返回键的期望数量:

        SCAN cursor [COUNT number]

迭代与给定匹配符相匹配的键

        SCAN cursor [MATCH pattern]

HSCAN、SSCAN、ZSCAN这3个命令可以用于迭代散列,集合,有序集合。

4 SORT:对键的值进行排序

执行SORT命令对列表元素、集合元素或者有序集合成员进行排序。

        SORT key

 指定排序方式 

        SORT key [ASC|DESC]

 对字符串值进行排序

        SORT key [ALPHA]

 

只获取部分排序结果

        SORT key [LIMIT offset count]

 

5 EXISTS:检查给定键是否存在 

可以通过使用EXISTS命令,检查给定的一个或多个键是否存在于当前正在使用的数据库中:

        EXISTS key [key ...]

只有2个键是存在的 

 

6 DBSIZE:获取数据库包含的键值对数量 

DBSIZE

7 TYPE:查看键的类型 

        TYPE key

8 RENAME、RENAMENX:修改键名

        RENAME origin new

 

9 MOVE:将给定的键移动到另一个数据库 

        MOVE key db

当目标数据库存在与给定键同名的键时,MOVE命令将放弃执行移动操作。

10 DEL:移除指定的键 

DEL命令允许用户从当前正在使用的数据库中移除指定的一个或多个键,以及与这些键相关联的值:

        DEL key [key ...]

11 UNLINK:以异步方式移除指定的键 

因为DEL命令会以同步方式执行移除操作,所以如果待移除的键非常庞大或者数量众多,那么服务器在执行移除操作的过程中就有可能被阻塞。比如,移除一个包含上百万个元素的集合,移除一个包含数十万个键值对的散列,或者一次移除成千上万个键,都有可能引起服务器阻塞。

UNLINK命令与DEL命令一样,都可以用于移除指定的键,但它与DEL命令的区别在于,当用户调用UNLINK命令去移除一个数据库键时,UNLINK只会在数据库中移除对该键的引用(reference),而对键的实际移除操作则会交给后台线程执行,因此UNLINK命令将不会造成服务器阻塞。

        UNLINK key [key ...]

UNLINK命令从Redis 4.0版本开始可用

12 FLUSHDB:清空当前数据库

通过使用FLUSHDB命令,用户可以清空当前正在使用的数据库:

        FLUSHDB

与DEL命令一样,FLUSHDB命令也是一个同步移除命令,并且因为FLUSHDB移除的是整个数据库而不是单个键,所以它常常会引发比DEL命令更为严重的服务器阻塞现象。

为了解决这个问题,Redis 4.0给FLUSHDB命令新添加了一个async选项:

        FLUSHDB async

13 FLUSHALL:清空所有数据库 

使用FLUSHALL命令,用户可以清空Redis服务器包含的所有数据库:

FLUSHALL

与FLUSHDB命令一样,以同步方式执行的FLUSHALL命令也可能会导致服务器阻塞,因此Redis 4.0也给FLUSHALL命令添加了同样的async选项:

        FLUSHALL async

14 SWAPDB:互换数据库

SWAPDB命令接受两个数据库号码作为输入,然后对指定的两个数据库进行互换,最后返回OK作为结果:

        SWAPDB x y

SWAPDB命令从Redis 4.0版本开始可用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

week08day01(power bi)

一 . 同期指标(与之前的对比) #同期销售额 -- SAMEPERIODLASTYEAR : 自动返回上一年度 的 同一日期销售额 PY CALCULATE([Core 销售额],SAMEPERIODLASTYEAR(维度 日期时间表[日期]) )-- 1.财务想法 : 2019年 和 2018年对比,但是2019年的数据截止到8/20…

用pako.js压缩字符串,如何在后端用java解开?

背景:项目链路为腾讯clb->Ingress(nginx)->项目服务,腾讯的Ingress对header请求头最大值为256K,无法加大,由于业务配置数据增加,此问题诟病已久,于是想着压缩打请求头数据后再请求,从而解决请求头大的…

每日五道java面试题之mybatis篇(一)

目录: 第一题. MyBatis是什么?第二题. ORM是什么?第三题. 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?第四题. 传统JDBC开发存在的问题第五题. JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的…

python 深度学习的学习路径

一、python基础代码 1.环境安装与配置 2.变量 3.流程控制语句 4.字符串 5.列表、元组、字典 6.函数 7.面向对象:继承、封装、多态 8.文件处理、异常处理 二、数据处理常用包 1.numpy 2.pandas 3.matplotlib 三、常用框架 1.pytorch 四、理解经典网络 1…

计算机考研|北航北理北邮怎么选?

北航985,北理985,北邮211 虽然北邮事211,但是北邮的计算机实力一点也不弱,学科评级,计算机是A 北航计算机评级也是A,北理的计算机评级是A- 所以,这三所学校在实力上来说,真的大差…

LeetCode 面试经典150题 274.H指数

题目: 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她…

DM数据库安装(Linux)

Linux安装 操作系统CPU数据库CentOS7x86_64 架构dm8_20230418_x86_rh6_64 先把压缩包扔过去 新建 dmdba 用户 创建用户所在的组,命令如下: groupadd dinstall 创建用户,命令如下: useradd -g dinstall -m -d /home/dmdba -s /…

由浅到深认识C语言(13):共用体

该文章Github地址:https://github.com/AntonyCheng/c-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn…

ConKI: Contrastive Knowledge Injection for Multimodal Sentiment Analysis

文章目录 ConKI:用于多模态情感分析的对比知识注入文章信息研究目的研究内容研究方法1.总体结构2.Encoding with Knowledge Injection2.1 Pan-knowledge representations2.2 Knowledge-specific representations 3.Hierarchical Contrastive Learning4.损失函数5.训…

信息检索(十四):Simple Entity-Centric Questions Challenge Dense Retrievers

Simple Entity-Centric Questions Challenge Dense Retrievers 摘要1. 引言2. 背景和相关工作3. EntityQuestions4. 剖析问题:实体 vs 问题模式4.1 密集检索表现出流行偏差4.2 观察问题有助于泛化 5. 迈向稳健的密集检索6. 结论 原文链接:https://aclant…

一文教会你SpringBoot是如何启动的

SpringBoot启动流程分析 流程图 源码剖析 运行Application.run()方法 我们在创建好一个 SpringBoot 程序之后,肯定会包含一个类:xxxApplication,我们也是通过这个类来启动我们的程序的(梦开始的地方),而…

从零开始学HCIA之SDN04

1、VXLAN数据封装 (1)Original L2 Frame,原始以太网报文,业务应用的以太网帧。 (2)VXLAN Header,VXLAN协议新定义的VXLAN头,长度为8字节。VXLAN ID(VNI)为2…

Unity 地图数据生成

在游戏开发中,地图是一个非常重要的元素,它可以影响游戏的玩法、视觉效果和整体体验。在Unity中,生成地图数据是一个常见的任务,它可以用于创建随机地图、关卡设计和其他一些应用场景。在本文中,我们将探讨如何使用Uni…

【趣味项目】命令行图片格式转换器

【趣味项目】一键生成LICENSE 项目地址:GitHub 项目介绍 一款命令行内可以批量修改图片格式的工具 使用方式 npm install xxhls/image-transformer -gimg-t --name.*.tiff --targetpng --path./images --recursiontrue技术选型 typeScript: 支持类型体操chal…

【网络安全】 MSF生成木马教程

本文章仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径。若读者因此作出任何危害网络安全的行为,后果自负,与作者无关。 环境准备: 名称系统位数IP攻击机Kali Linux6410.3.0.231客户端Windows 76410.3.0.234…

Python中的迭代器与生成器提高性能的秘密武器【第143篇—迭代器与生成器】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Python中的迭代器与生成器:提高性能的秘密武器 在Python编程中,迭代…

网络安全等保测评指标一览表

什么是等保? 等保是指对国家重要信息、法人和其他组织及公民的专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护,对信息系统中使用的信息安全产品实行按等级管理,对信息系统中发生的信息安全事件分等级响应、处…

关于SRE

SRE(Site Reliability Engineering)是一种由Google提出的运维工程师团队的方法论。SRE的目标是通过将软件工程的原则和实践应用于运维工作,来提高系统的可靠性和可扩展性。SRE强调自动化、监控、故障处理和容量规划等方面的工作,以…

[TJOI2010] 阅读理解 **STL**Tire树**

[TJOI2010] 阅读理解 题目链接: https://www.luogu.com.cn/problem/P3879 题目描述 思路1 (STL大法) 对每个单词,用map来映射存储它所在的短文编号 用set的好处: -------1. 存储直接自动排序,操作简单&…

python 通过 ast 替换代码

导航目录 目录结构要替换的代码替换代码的逻辑新建类,继承 ast运行新建的类最最重要的一步replace_code.py 完整代码 main.py 里面的代码执行结果 最后 目录结构 . ├── hello │ ├── __init__.py │ └── utils.py ├── main.py ├── replace_code…