【Redis】Redis命令(一)

1.基本命令

     1.1.切换DB

        默认使用的是 0 号 DB,可以通过 select db 索引来切换 DB

        

     1.2.查看 key 数量

        dbsize 命令可以查看当前数据库中 key 的数量

        

     1.3.删除当前库中数据

        flushdb 命令仅仅删除的是当前数据库中的数据,不影响其它库

        

     1.4.删除所有库中数据命令

        flushall 命令可以删除所有库中的所有数据

        

     1.5.退出客户端命令

        使用 exit 或 quit 命令均可退出 Redis 命令行客户端

2.Key 操作命令

        Redis 中存储的数据整体是一个 Map,它的 key 是 String 类型, value 则可以是 String、 Hash 表、List、Set 等类型

     2.1.keys

        1)命令:keys pattern

        2)功能:查找所有符合给定模式 pattern 的 key,pattern 为正则表达式,如:keys *h* 查找DB所有key名含有h的;keys * 查询所有key。keys 的速度非常快,但在一个大的数据库中使用它可能会阻塞当前服务器的服务。生产环境中一般不使用该命令,而使用 scan 命令代替

     2.2.exists

        1)命令:exists key

        2)功能:检查给定 key 是否存在,若存在返回1,反之返回0

     2.3.del

        1)命令:DEL key [key ...]

        2)功能:删除给定的一个或多个 key 。不存在的 key 会被忽略,返回被删除数量

     2.4.rename

        1)命令:RENAME key newkey

        2)功能:将 key 改名为 newkey,当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。当 newkey 已经存在时,将已存在的覆盖

     2.5.move

        1)命令:MOVE key db

        2)功能:将当前数据库的 key 移动到给定的数据库 db 当中,如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key , 或者 key 不存在于当前数据库,那么 MOVE 没有任何效果,成功返回1反之返回0

     2.6.type

        1)命令:TYPE key

        2)功能:返回 key 所储存的值的类型,none (key 不存在) ,string (字符串) ,list (列表) ,set (集合) , zset (有序集) , hash (哈希表)

     2.7.expire 与 pexpire

        1)命令:EXPIRE key seconds

        2)功能:为给定 key 设置生存时间,当 key 过期时(生存时间为 0),它会被自动删除。 expire 的时间单位为秒,pexpire 的时间单位为毫秒。在 Redis 中,带有生存时间的 key 被称为“易失的”(volatile)。rename 操作不会改变 key 的生存时间

     2.8.ttl 与 pttl

        1)命令:TTL key

        2)功能::返回给定 key 的剩余生存时间,当 key 不存在时,返回 -2 ;当 key 存在但没有设置剩余生存时间时,返回 -1 ;否则,返回 key 的剩余生存时间

     2.9.persist

        1)命令:PERSIST key

        2)功能:去除给定 key 的生存时间,将这个 key 从“易失的”转换成“持久的”

     2.10.randomkey

        1)命令:RANDOMKEY

        2)功能:从当前数据库中随机返回(不删除)一个 key,当数据库为空时,返回 nil

     2.11.scan

        1)命令:SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]

        2)功能:用于迭代数据库中的数据库键。SCAN 命令每次被调用之后,都会向用 户返回返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标, 而第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。用户在下次迭代 时需要使用这个新游标作为 SCAN 命令的游标参数,以此来延续之前的迭代过程。当 SCAN 命令的游标参数被设置为 0 时,服务器将开始一次新的迭代。如果新游标返回 0 表示迭代已结束。

        3)说明:cursor:本次迭代开始的游标。pattern :本次迭代要匹配的 key 的模式。count :本次迭代要从数据集里返回多少元素,默认值为 10 ,但返回的数量不一定符合count值。type:本次迭代要返回的 value 的类型,默认为所有类型。使用间断的、负数、超出范围或者其他非正常的游标来执行增量式迭代不会造成 服务器崩溃。当数据量很大时,count 的数量的指定可能会不起作用,Redis 会自动调整每次的遍 历数目。由于 scan 命令每次执行都只会返回少量元素,所以该命令可以用于生产环境, 而不会出现像 KEYS 命令带来的服务器阻塞问题。

        4)count问题详解:https://www.cnblogs.com/zhaoyongjie-z/p/14311711.html

3.value是String型操作命令

     3.1.set

        1)命令:SET key value [EX seconds | PX milliseconds] [NX|XX]

        2)功能:为 key 设值。EX seconds:为当前 key 设置过期时间,单位秒。等价于 SETEX 命令。PX milliseconds:为当前 key 设置过期时间,单位毫秒。等价于 PSETEX 命令。NX:指定的 key 不存在才会设置成功,用于添加指定的 key。等价于 SETNX 命令。  XX:指定的 key 必须存在才会设置成功,用于更新指定 key 的 value

     3.2.setex 与 psetex

        1)命令:SETEX/PSETEX key seconds value

        2)功能:不仅为 key 指定了 value,还为其设置了生存时间。setex 的单位为 秒,psetex 的单位为毫秒,如果 key 已经存在, 则覆写旧值,在 Redis 用作缓存时,非常实用

     3.3.setnx

        1)命令:SETNX key value

        2)功能:将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作

     3.4.getset

        1)命令:GETSET key value

        2)功能:将给定 key 的值设为 value ,并返回 key 的旧值,当 key 存在但不是字符串类型时,返回一个错误;当 key 不存在时,返回 nil

     3.5.mset 与 msetnx

        1)命令:MSET/MSETNX key value [key value ...]

        2)功能::同时设置一个或多个 key-value 对,如果某个给定 key 已经存在,那么 MSET 会用新值覆盖原来的旧值;MSETNX 命令则不会

     3.6.mget

        1)命令:MGET key [key ...]

        2)功能:返回所有(一个或多个)给定 key 的值,如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil,该命令永不失败

     3.7.append

        1)命令:APPEND key value

        2)功能:如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原 来的值的末尾。如果 key 不存在, APPEND 就简单地将给定 key 设为 value

     3.8.incr 与 decr

        1)命令:INCR key 或 DECR key

        2)功能:incr 自动递增,将 key 中存储的数字值增一。decr 自动递减,将 key 中存储的数字值减一。如果 key 不存在,那么 key 的值会先被初始化为 0,然后再执行增一/减一操作。 如果值不能表示为数字,那么返回一个错误提示。如果执行正确,则返回增一/减一后的值

     3.9.incrby 与 decrby

        1)命令:INCRBY key increment 或 DECRBY key decrement

        2)功能:将 key 中存储的数字值增加/减少指定的数值,这个数值只能是整数,可以是负 数,但不能是小数。如果 key 不存在,那么 key 的值会先被初始化为 0,然后再执行增/减操作。如 果值不能表示为数字,那么返回一个错误提示。如果执行正确,则返回增/减后的值

     3.10.incrbyfloat

        1)命令:INCRBYFLOAT key increment

        2)功能:为 key 中所储存的值加上浮点数增量 increment,如果 key 不存在,那么 key 的值会先被初始化为 0,然后再执操作

     3.11.strlen

        1)命令:STRLEN key

        2)功能:返回 key 所储存的字符串值的长度

     3.12.getrange

        1)命令:GETRANGE key start end

        2)功能:返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移 量决定,包括 start 和 end 在内,支持负数偏移量,表示从字符串最后开始计数,-1 表示 最后一个字符,-2 表示倒数第二个

     3.13.setrange

        1)命令:SETRANGE key offset value

        2)功能:用 value 参数替换给定 key 所储存的字符串值 str,从偏移量 offset 开始,当 offset 值大于 str 长度时,中间使用零字节\x00 填充,即 0000 0000 字节填充; 对于不存在的 key 当作空串处理

     3.14.典型应用场景

        1)数据缓存

           Redis 作为数据缓存层,应用服务器首先从 Redis 中获取数据, 如果缓存层中没有,则从 数据库中获取,然后先存入缓存层再返回给应用服务器。

        2)计数器

           在 Redis 中写入一个 value 为数值型的 key 作为平台计数器、视频播放计数器等,每次有效客户端访问一次,或视频每播放一次,都是直接修改 Redis 中的计数器,然后再以异步 方式持久化到其它数据源中

        3)共享 Session

           可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请 求后,系统先从 Redis 中查找相应的 Session 数据,如果存在,则再进行相关操作,否则跳 转到登录页面

        4)限速器

           为了防止 DoS(Denial of Service,拒绝服务)攻击,让一个 IP 不能在一秒内访问超过 n 次。而 Redis 可以可以结合 key 的过期时间与 incr 命令来完成限速功能,充当限速器。无法防止 DDoS(Distributed Denial of Service,分布式拒绝服务)攻击

    

                

  

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用Python做多项Logit模型

看到网上有一些用 python 做多项 Logit 模型的讲解,大多是使用 scikit-learn 库。这里要介绍的是如何使用 statsmodels 库来做多项 Logit 模型。 题外话,有人会问,statsmodels 和 scikit-learn 两个库有什么区别?为什么你非要用 …

SQL 基础 | JOIN 操作介绍

在SQL中,JOIN是一种强大的功能,用于将两个或多个表中的行结合起来,基于相关的列之间的关系。 JOIN操作通常用在SELECT语句中,以便从多个表中检索数据。 以下是几种基本的JOIN类型以及它们的用法: INNER JOIN&#xff1…

数据结构===树

文章目录 概要概念相关概念 有哪些常用的树小结 概要 树是一种新的数据结构,不同于数组,链表。就像大自然中的树,看下这个数据结构,很有意思,有一个主干,然后还有很多树叉,即支干。不错&#xf…

数据结构练习题---环形链表详解

链表成环,在力扣中有这样的两道题目 https://leetcode.cn/problems/linked-list-cycle/ https://leetcode.cn/problems/linked-list-cycle-ii/description/ 这道题的经典解法是利用快慢指针,如果链表是一个环形链表,那么快指针(fast)和慢指…

求矩阵对角线元素之和(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int i 0;int j 0;int sum 0;int a[3][3] { 0 };//获取数组a的值&#xff1b;printf(&qu…

华为鸿蒙系统(Huawei HarmonyOS)

华为鸿蒙系统&#xff08;华为技术有限公司开发的分布式操作系统&#xff09; 华为鸿蒙系统&#xff08;HUAWEI HarmonyOS&#xff09;&#xff0c;是华为公司在2019年8月9日于东莞举行的华为开发者大会&#xff08;HDC.2019&#xff09;上正式发布的分布式操作系统。 华为鸿蒙…

STM32单片机实战开发笔记-I2C通讯总线【wulianjishu666】

嵌入式单片机开发实战例程合集&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/11av8rV45dtHO0EHf8e_Q0Q?pwd28ab 提取码&#xff1a;28ab I2C模块测试 功能描述 I2C总线接口连接微控制器和串行I2C总线。它提供多主机功能&#xff0c;控制所有I2C总线特定的时序&am…

QCC3071/QCC3081/QCC3083/QCC3084/QCC5171/QCC5181/QCC3091/QCC3095平台LDAC解码

QCC3071/QCC3081/QCC3083/QCC3084/QCC5171/QCC5181/QCC3091/QCC3095平台LDAC解码 LDAC Decoder Evaluation Kit for QCC5181 and QCC5171 (The 5181 Kit) 随着Qualcomm DSP向下开放&#xff0c;QCC3071/QCC3081/QCC3083/QCC3084目前可以可以实现LDAC Decoder。 QCC3071/QCC3…

MATLAB 多项式

MATLAB 多项式 MATLAB将多项式表示为行向量&#xff0c;其中包含按幂次降序排列的系数。例如&#xff0c;方程P(x) X 4 7 3 - 5 9可以表示为 p [1 7 0 -5 9]; 求值多项式 polyval函数用于求一个特定值的多项式。例如&#xff0c;在 x 4 时&#xff0c;计算我们之前的多项式…

运行时数据区-基础

运行时数据区-基础 为什么学习运行时数据区Java内存区域&#xff08;运行时数据区域&#xff09;和内存模型&#xff08;JMM&#xff09; 区别组成部分&#xff08;jdk1.7 / jdk1.8&#xff09;从线程隔离性分类与类加载的关系每个区域的功能参考文章 为什么学习运行时数据区 …

Amazon EKS创建S3数据存储卷

亚马逊相关文档 1、创建适用于 Amazon S3的IAM策略 创建存储桶amazoneks {"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "s3express:CreateSession","Resource": &…

Java零基础入门到精通_Day 9

1.ArrayList 编程的时候如果要存储多个数据&#xff0c;使用长度固定的数组存储格式&#xff0c;不一定满足我们的需求&#xff0c;更适应不了变化的需求&#xff0c;那么&#xff0c;此时该如何选择呢? 集 合 集合类的特点:提供一种存储空间可变的存储模型&#xff0c;存储的…

2024年 Java 面试八股文——SpringBoot篇

目录 1. 什么是 Spring Boot&#xff1f; 2. 为什么要用SpringBoot 3. SpringBoot与SpringCloud 区别 4. Spring Boot 有哪些优点&#xff1f; 5. Spring Boot 的核心注解是哪个&#xff1f;它主要由哪几个注解组成的&#xff1f; 6. Spring Boot 支持哪些日志框架&#…

信息系统项目管理师0086:项目内外部运行环境(6项目管理概论—6.2项目基本要素—6.2.5项目内外部运行环境)

点击查看专栏目录 文章目录 6.2.5项目内外部运行环境1.组织过程资产2.组织内部的事业环境因素3.组织外部的事业环境因素6.2.5项目内外部运行环境 项目在内部和外部环境中存在和运作,这些环境对价值交付有不同程度的影响。内部和外部环境可能会影响规划和其他项目活动。这些影响…

《苍穹外卖》Day12部分知识点记录——数据统计-Excel报表

一、工作台 需求分析和设计 接口设计 今日数据接口订单管理接口菜品总览接口套餐总览接口订单搜索&#xff08;已完成&#xff09;各个状态的订单数量统计&#xff08;已完成&#xff09; 代码实现 今日数据接口 1. WorkspaceController 注意不要导错包了 package com.sk…

【Linux IO基础】缓冲区

概念 缓冲区的主要作用是提高效率 --- 提高使用者的效率&#xff0c;因为有缓冲区的存在&#xff0c;我们可以积累一部分再统一发送&#xff0c;提高发送的效率。 刷新方式 缓冲区因为能够暂存数据&#xff0c;必定要有一定的刷新方式&#xff1a; 一般策略&#xff1a; 无…

【JavaEE】线程的概念

文章目录 1、什么是线程2、进程和线程的区别3、多线程的概述4、在Java中实现多线程的方法1.继承Thread类2.实现Runnable接口3.使用匿名内部类来继承Thread类&#xff0c;实现run方法4.使用匿名内部类来实现Runnable接口&#xff0c;实现run方法5.使用 lambda表达式 1、什么是线…

ubuntu20中ros与anaconda的python版本冲突问题

系统环境 原本系统是ubuntu20 noetic&#xff0c;python都在/usr/bin中&#xff0c;一共是两个版本的python&#xff0c;一个是python3.8&#xff0c;另一个是python2.7。 问题发现 当安装anaconda后&#xff0c;并且将anaconda的bin目录加入到系统环境中时候&#xff0c;…

【微服务】——Docker 基础知识

这里写自定义目录标题 1.1 了解Docker1.1.1应用部署的环境问题1.1.2.Docker解决依赖兼容问题1.1.3.Docker解决操作系统环境差异1.1.4.小结 1.2.Docker和虚拟机的区别1.3.Docker架构1.3.1.镜像和容器1.3.2.DockerHub1.3.3.Docker架构1.3.4.小结 1.4.安装Docker——未实践 2.Dock…

【莫比乌斯变换-03】python实现圆对圆的变换

文章目录 一、说明二、python实现复平面的莫比乌斯变换三、线的变换四、画笑脸 一、说明 我们在前面的文章中&#xff0c;叙述了莫比乌斯变换的复数分析&#xff0c;以及种种几何属性&#xff0c;本篇中叙述如何程序地实现&#xff1a;复平面上的圆在莫比乌斯变换下的图像是另…