[Redis][String][上]详细讲解

目录

  • 0.前言
  • 1.常见命令
    • 1.SET
    • 2.GET
    • 3.MSET && MGET
    • 4.SETNX && SETXX
  • 2.计数命令
    • 1.INCR
    • 2.INCRBY
    • 3.DECR
    • 4.DECYBY
    • 5.INCRBYFLOAT
    • 6.注意


0.前言

  • 字符串类型是Redis最基础的数据类型,关于字符串需要特别注意

    • Redis中所有的键的类型都是字符串类型,⽽且其他⼏种数据结构也都是在字符串类似基础上构建的
      • 例如:列表和集合的元素类型是字符串类型
    • 字符串类型的值实际可以是字符串,包含⼀般格式的字符串 --> 不仅仅可以存储文本数据
      • 类似JSON、XML格式的字符串
      • 数字,可以是整型或者浮点型
      • 甚⾄是⼆进制流数据,
        • 例如:图⽚、⾳频、视频等
          请添加图片描述
  • ⼀个字符串的最⼤值不能超过512MB

  • Redis内部存储字符串完全是按照⼆进制流的形式保存的

    • Redis是不处理字符集编码问题的,客⼾端传⼊的命令中使⽤的是什么字符集编码,就存储什么字符集编码

1.常见命令

1.SET

  • 功能:将string类型的value设置到key
    • 如果key不存在,则创建新的键值对
    • 如果key之前存在,则覆盖,⽆论原来的数据类型是什么(可能会改变原来的数据类型),之前关于此keyTTL也全部失效
  • 语法SET key value [expiration EX seconds|PX milliseconds] [NX|XX]
  • 选项
    • EX seconds:使⽤秒作为单位设置key的过期时间
    • PX milliseconds:使⽤毫秒作为单位设置key的过期时间
    • NX只在key不存在时才进⾏设置,即如果key之前已经存在,设置不执⾏
    • XX只在key存在时才进⾏设置,即如果key之前不存在,设置不执⾏
      • 相当于更新keyvalue
    • 注意:由于带选项的SET命令可以被SETNX, SETEX, PSETEX等命令代替,所以之后的版本中,Redis可能进行合并
  • 返回值
    • 如果设置成功,返回OK
    • 如果由于SET指定了NX或者XX但条件不满⾜,SET不会执⾏,并返回(nil)
  • 时间复杂度 O ( 1 ) O(1) O(1)

2.GET

  • 功能:获取key对应的value
    • 如果key不存在,返回nil
    • 如果value的数据类型不是string,会报错
  • 语法GET key
  • 返回值key对应的value,或者当key不存在时返回nil
  • 时间复杂度 O ( 1 ) O(1) O(1)

3.MSET && MGET

  • MSET:

    • 功能:一次性设置多个key的值
    • 语法MSET key value [key value ...]
    • 返回值:永远是OK
    • 时间复杂度 O ( 1 ) O(1) O(1)
  • MGET

    • 功能:⼀次性获取多个key的值
      • 如果对应的key不存在或者对应的数据类型不是string,返回nil
    • 语法:`MGET key [key …]
    • 返回值:对应value的列表
    • 时间复杂度 O ( 1 ) O(1) O(1)
  • 多次GET和单词MGET比较:使用MGET/MSET可有效减少网络时间,性能较高
    请添加图片描述

  • 综上:学会使⽤批量操作,可以有效提⾼业务处理效率

    • 注意:每次批量操作所发送的键的数量也不是⽆节制的,否则可能造成单⼀命令执⾏时间过⻓,导致Redis阻塞

4.SETNX && SETXX

  • SETNX
    • 功能:设置key-value,但只允许在key之前不存在的情况下
    • 语法SETNX key value
    • 时间复杂度 O ( 1 ) O(1) O(1)
    • 返回值:1表⽰设置成功,0表⽰没有设置
  • SETXX
    • 功能:设置key-value,但只允许在key之前存在的情况下
    • 语法SETXX key value
    • 时间复杂度 O ( 1 ) O(1) O(1)
    • 返回值:1表⽰设置成功,0表⽰没有设置
  • SET、SETNX、SETXX执⾏流程
    请添加图片描述

2.计数命令

1.INCR

  • 功能:将key对应的string表⽰的数字加⼀
    • 如果key不存在,则视为key对应的value0
    • 如果key对应的string不是⼀个整型或者范围超过了64位有符号整型,则报错
  • 语法INCR key
  • 返回值integer类型的加完后的数值
  • 时间复杂度 O ( 1 ) O(1) O(1)

2.INCRBY

  • 功能:将key对应的string表⽰的数字加上对应的值
    • 如果key不存在,则视为key对应的value0
    • 如果key对应的string不是⼀个整型或者范围超过了64位有符号整型,则报错
  • 语法INCRBY key increment
  • 返回值integer类型的加完后的数值
  • 时间复杂度 O ( 1 ) O(1) O(1)

3.DECR

  • 功能:将key对应的string表⽰的数字减⼀
    • 如果key不存在,则视为key对应的value0
    • 如果key对应的string不是⼀个整型或者范围超过了64位有符号整型,则报错
  • 语法DECR key
  • 时间复杂度 O ( 1 ) O(1) O(1)
  • 返回值integer类型的减完后的数值

4.DECYBY

  • 功能:将key对应的string表⽰的数字减去对应的值
    • 如果key不存在,则视为key对应的value0
    • 如果key对应的string不是⼀个整型或者范围超过了64位有符号整型,则报错
  • 语法DECRBY key decrement
  • 时间复杂度 O ( 1 ) O(1) O(1)
  • 返回值integer类型的减完后的数值

5.INCRBYFLOAT

  • 功能:将key对应的string表⽰的浮点数加上对应的值,允许采⽤科学计数法表⽰浮点数
    • 如果对应的值是负数,则视为减去对应的值
    • 如果key不存在,则视为key对应的value0
    • 如果key对应的不是string,或者不是⼀个浮点数,则报错
  • 语法INCRBYFLOAT key increment
  • 时间复杂度 O ( 1 ) O(1) O(1)
  • 返回值:加/减完后的数值

6.注意

  • Redis存储整数,是直接使用int类型存的,而存储小数,本质上是当作字符串来存储
    • Redis的int比较方便算术运算
    • 小数意味着每次进行算术运算,都需要把字符串转成小数,进行运算,再把结果转回字符串保存
  • 很多存储系统和编程语⾔内部使⽤CAS机制实现计数功能,会有⼀定的CPU开销
    • 但在Redis中完全不存在这个问题,因为Redis是单线程架构,任何命令到了Redis服务端都要顺序执⾏
  • 由于Redis处理命令的时候,是单线程模型,多个客户端同时针对同一个key进行INCR等操作,不会引起"线程安全"问题

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【南方科技大学】CS315 Computer Security 【Lab3 Format String Vulnerability】

目录 Lab OverviewLab TasksTask 1: The Vulnerable ProgramTask 2: Understanding the Layout of the StackTask 3: Crash the ProgramTask 4: Print Out the Server Program’s MemoryTask 5: Change the Server Program’s MemoryTask 6: Inject Malicious Code into the Se…

Vue2学习笔记(02条件渲染 、监视数据的原理)

1、v-if和v-show的区别 2、Vue监视数据的原理

gcc升级(含命令行升级、手动升级两种方式)

gcc升级 1.yum源替换1.1 备份原始repo配置文件1.2 重新配置CentOS-Base.reporepo文件1.3 清除缓存并重新创建 2. gcc安装3.命令行升级gcc4.手动升级4.1 安装包下载4.2 解压4.3 gcc升级4.3.1 依赖拉取4.3.2 gmp安装4.3.3 mpfr安装4.3.4 mpc安装4.3.5 gcc编译、安装 4.4 gcc命令配…

springsecurity+jwt实现前后端分离认证授权

文章目录 1.简介2.快速入门3.认证3.1登录校验流程3.2原理初探3.3认证详流程详解3.4 分析UsernamePasswordAuthenticationFilter 4.案例实战4.1 思路分析4.2准备工作4.3实战1.数据库校验用户2.核心代码1.创建UserDetailsService实现类2.创建UserDetails实现类3.密码加密存储模式…

前端界面搜索部分,第一个选择框的值,影响第二个选择框的值

1.字段声明 {title: 单位名称,dataIndex: departmentId,align: center,width: 100,hideInTable: true,renderFormItem: (item, { defaultRender, ...rest }) > (<ProFormSelectname"departmentId"// label"单位名称"options{hospitaltData}onChange…

fiddler抓包06_抓取https请求(chrome)

课程大纲 首次安装Fiddler&#xff0c;抓https请求&#xff0c;除打开抓包功能&#xff08;F12&#xff09;还需要&#xff1a; ① Fiddler开启https抓包 ② Fiddler导出证书&#xff1b; ③ 浏览器导入证书。 否则&#xff0c;无法访问https网站&#xff08;如下图&#xff0…

详解CORDIC算法以及Verilog实现并且调用Xilinx CORDIC IP核进行验证

系列文章目录 文章目录 系列文章目录一、什么是CORDIC算法&#xff1f;二、CORDIC算法原理推导三、CORDIC模式3.1 旋转模式3.2 向量模式 四、Verilog实现CORDIC4.1 判断象限4.2 定义角度表4.3 迭代公式 五、仿真验证5.1 matlab打印各角度的正余弦值5.2 Verilog仿真结果观察 六、…

使用Python免费将pdf转为docx

刚刚想将pdf转换为docx文档时&#xff0c;居然要收费 还好我学过编程&#xff0c;这不得露两手 将pdf 转换为 docx 文档 的操作步骤 我这里使用的是Python语言 &#xff08;1&#xff09;在终端上安装 pdf2docx 是一个 Python 库&#xff0c;它可以将 PDF 文件转换为 Word (…

PHP发邮件教程:配置SMTP服务器发送邮件?

PHP发邮件的几种方式&#xff1f;如何使用PHP通过SMTP协议发信&#xff1f; PHP作为一种广泛使用的服务器端脚本语言&#xff0c;提供了多种方式来发送邮件。AokSend将详细介绍如何通过配置SMTP服务器来实现PHP发邮件教程的核心内容。 PHP发邮件教程&#xff1a;设置参数 这…

《Linux运维总结:基于Ubuntu 22.04操作系统+x86_64架构CPU部署二进制mongodb 7.0.14分片集群》

总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:《Linux运维篇:Linux系统运维指南》 一、简介 1、应用场景 当您遇到如下问题时,可以使用分片集群解决: a、 存储容量受单机限制,即磁盘资源遭遇瓶颈。 b、 读写能力受单机限制,可能是CPU、内…

VSCode语法提示的配置

ctrlshiftP打开Command Palette,运行C/Cpp: Edit configurations...生成c_cpp_properties.json c_cpp_properties.json是什么&#xff1f; 这个文件主要是用于VSCode语法提示的配置&#xff0c;例如&#xff1a;指定 include 路径&#xff0c;问题匹配类型等。CtrlShiftP打开C…

课题分享:宿舍管理系统小程序,基于微信小程序+SSM+mysql

一、前言介绍 互联网概念的产生到如今的蓬勃发展&#xff0c;用了短短的几十年时间就风靡全球&#xff0c;使得全球各个行业都进行了互联网的改造升级&#xff0c;标志着互联网浪潮的来临。在这个新的时代&#xff0c;各行各业都充分考虑互联网是否能与本行业进行结合&#xf…

【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL21

根据状态转移表实现时序电路 描述 某同步时序电路转换表如下&#xff0c;请使用D触发器和必要的逻辑门实现此同步时序电路&#xff0c;用Verilog语言描述。 电路的接口如下图所示。 输入描述&#xff1a; input A , input clk , …

chorme浏览器 您的连接不是私密连接

‌当浏览器显示“您的连接不是私密连接&#xff0c;攻击者可能会试图从 localhost 窃取您的信息&#xff08;例如&#xff1a;密码、消息或信用卡信息&#xff09;”的警告时&#xff0c;这通常意味着您正在尝试访问的网站的安全证书存在问题&#xff0c;可能是因为它使用的是自…

C++学习指南(六)----list

欢迎来到繁星的CSDN。本期内容主要包括&#xff0c;list的介绍、使用以及与vector的优缺点。 一、什么是list 在先前的C语言学习中&#xff0c;我们接触到了顺序表和链表&#xff0c;而在C中&#xff0c;这正好对应了vector&#xff08;动态增长顺序表&#xff09;和l…

1网络安全的基本概念

文章目录 网络安全的基本概念可以总结为以下几个方面&#xff1a; 网络安全的需求&#xff1a; 信息安全的重要性&#xff1a;信息安全是计算机、通信、物理、数学等领域的交叉学科&#xff0c;对于社会的发展至关重要。信息安全的目标&#xff1a;主要包括保密性、完整性、可用…

【Linux】yum、vim、gcc使用(超详细)

Linux中常见的软件安装方式 --------- 下载&&安装 a、yum/apt b、rpm安装包安装 c、源码安装 yum 关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!! 可以通过 ping 指令验证&#xff1a; ping www.baidu.com 安装软件 yum 会自动找到都有哪些软件包需要下载…

Leetcode 93-复原 IP 地址

有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 ‘.’ 分隔。 例如&#xff1a;“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址&#xff0c;但是 “0.011.255.245”、“192.168.…

【爆炸】BB机,BP机,寻呼系统基础知识,物理层讲解

本页介绍寻呼系统基础知识。其中提到了寻呼机使用的数字协议并描述了数字寻呼接收器。 寻呼是一种单向通信系统。寻呼系统向携带小型电池供电设备&#xff08;称为寻呼机&#xff09;的个人广播信号或消息。这是与员工和/或客户沟通的非常重要的方式。让我们看看寻呼系统的工作…

IP包头分析

IP包头 选择自己的网卡&#xff0c;开始抓包 ping一个字节大点的数据&#xff0c;方便查看包 选择数据包&#xff0c;并过滤icmp协议 查看抓到的包&#xff0c;分析 IP包头范围&#xff1a;20-60 首部长度&#xff1a;定义包头的长度 总长度&#xff1a;表示当前数据的长度…