当前位置: 首页 > news >正文

Redis常见数据类型(2)

目录

String字符串

常见命令

SET

GET

MGET

MSET

SETNX

计数命令 

INCR

INCRBY

DECR

DECRBY

INCRFLOAT

其它命令

 APPEND

GETRANGE

SETRANGE

STRLEN


String字符串

字符串是Redis最基础的数据类型, 关于字符串需要特别注意: (1)首先Redis中所有的键的类型都是字符串类型, 而且其它几种数据结构也是在字符串类型的基础上构建的, 例如列表和集合的元素都是字符串类型, 所以字符串类型能为其它4种数据结构的学习奠定基础. (2)其次, 如图, 字符串类型的值实际可以是字符串, 包含一般格式的字符串类似JSON, XML格式的字符串; 数字, 可以是整型或者浮点型; 甚至是二进制数据, 例如图片, 音频等. 不过一个字符串的最大值不能超过512MB.

由于Redis内部存储的字符串完全是按照二进制流的形式保存的,  所以Redis是不处理字符集编码问题的, 客户端传入的命令中使用的是什么字符集编码, 就存储什么字符集编码.

常见命令

SET

将string类型的value设置到key中. 如果key之前存在, 则覆盖, 无论原来的数据类型是什么. 之前关于此key的TTL也全部失效.

语法:

SET key value [expiration EX seconds | PX milliseconds] [NX|XX]

命令有效版本: 1.0.0之后.    时间复杂度:O(1) 

选项:

EX seconds: 使用秒为单位设置key的过期时间.

PX milliseconds: 使用毫秒为单位设置key的过期时间.

NX: 只在key不存在时才进行设置, 即如果key之前已经存在, 设置不执行.

XX: 旨在key存在时才进行设置, 即如果key之前不存在, 设置不执行.

注: 由于带选项的SET命令可以被SETNX, SETEX, PSETEX等命令代替, 所以之后版本中, Redis可能进行合并.

返回值:

如果设置成功, 则返回OK.

如果由于SET制定了NX或XX但条件不满足, SET不会执行, 并返回(nil).

示例:

GET

获取key对应的value. 如果key不存在, 返回nil. 如果value的数据类型不是string, 会报错.

语法:

GET key 

命令有效版本: 1.0.0之后.  时间复杂度: O(1).

返回值: key对应的value, 或者nil当key不存在. 

MGET

一次性获取多个key的值. 如果对应的key不存在或者对应的数据类型不是string, 返回nil.

语法:

MGET key [key...] 

命令有效版本: 1.0.0之后. 时间复杂度: O(N) N是key的数量.

返回值: 对应value的列表.

示例:

MSET

一次性设置多个key的值.

语法:

MSET key value [key value...] 

命令有效版本: 1.0.1之后.  时间复杂度: O(N) N是key的数量.

返回值: 永远是OK.

SETNX

设置key-value但只允许在key之前不存在的情况下.

语法:

SETEX key value

命令有效版本: 1.0.0之后 时间复杂度: O(1)

返回值: 1表示设置成功. 0表示没有设置.

示例:

计数命令 

INCR

将key对应的string表示的数字加一. 如果key不存在, 则视为key对应的value是0. 如果key对应的string不是一个整型或者范围超过了64位有符号整型, 则报错.

语法:

INCR key

命令有效版本: 1.0.0之后  时间复杂度:O(1)

返回值: integer类型的加完后的数值.

示例:

INCRBY

将key对应的string表示的数字加上对应的值.  如果key不存在, 则视为key对应的value是0. 如果key对应的string不是一个整型或者范围超过了64位有符号整型, 则报错.

语法:

INCRBY key decrement

命令有效版本: 1.0.0之后. 时间复杂度: O(1)

返回值: integer类型加完后的数值.

示例:

DECR

将key对应的string表示的数字-1. 如果key不存在, 则视为key对应的value是0. 如果key对应的string不是一个整型或者范围超过了64位有符号整型, 则报错.

语法:

DECR key 

命令有效版本: 1.0.0之后  时间复杂度: O(1)

返回值: integer类型减完后的值.

DECRBY

将key对应的string表示的数字减去对应的值. 如果key不存在, 则视为key对应的value是0. 如果key对应的string不是一个整型或者范围超过了64位有符号整型, 则报错.

语法:

DECRBY key decrement

命令有效版本: 1.0.0之后. 时间复杂度: O(1)

返回值: integer类型减完后的数值.

INCRFLOAT

将key对应的string表示的浮点数加上对应的值.  如果对应的值是负数, 则视为减去对应的值(因此没有DECRFLOAT). 如果key不存在, 则视为key对应的value是0. 如果key对应的不是string, 或者不是一个浮点数, 则报错. 允许采用科学计数法表示浮点数.

语法:

INCRBYFLOAT key increment

命令有效版本: 2.6.0之后   时间复杂度: O(1)

返回值: 加/减完后的数值.

示例:

很多存储系统和编程语言内部使用CAS机制实现计数功能, 会有一定的CPU开销, 但在Redis中完全不存在这个问题, 因为Redis是单线程架构, 任何命令到了Redis服务端都要顺序执行.

其它命令

 APPEND

如果key已经存在并且一个是string, 命令会将value追加到原有string的后面. 如果key不存在, 则效果等同于SET命令.

语法:

APPEND KEY VALUE

命令有效版本: 2.0.0之后.  时间复杂度:O(1). 追加的字符串长度比较短, 可以视为O(1).

返回值: 追加完成之后string的长度.

示例:

GETRANGE

返回key对应的string的字串, 由start和end确定(左闭右闭) . 可以使用负数表示倒数. -1代表倒数第一个字符, -2表示倒数第二个. 0是正数开始. 超过范围的偏移量会根据string的长度调整成正确的值.

语法:

GETRANGE key start end

命令有效版本: 2.4.0之后.  时间复杂度: O(N) N为[start,end]长度. 由于string通常较短, 可视为O(1)

返回值: string类型的字串.

SETRANGE

覆盖字符串的一部分, 从指定的偏移开始.

语法:

  SETRANGE key offset value 

命令有效版本: 2.2.0之后. 时间复杂度: O(N), N为value的长度. 由于value一般较短, 可视为O(1)

返回值: 替换后string的长度.

示例:

STRLEN

获取key对应的string长度. 当key存放的类型不是string时, 报错.

语法:

STRLEN key 

命令有效版本: 2.2.0之后. 时间复杂度:O(1)

返回值: string的长度. 或者当key不存在时, 返回0.

相关文章:

Redis常见数据类型(2)

目录 String字符串 常见命令 SET GET MGET MSET SETNX 计数命令 INCR INCRBY DECR DECRBY INCRFLOAT 其它命令 APPEND GETRANGE SETRANGE STRLEN String字符串 字符串是Redis最基础的数据类型, 关于字符串需要特别注意: (1)首先Redis中所有的键的类型都是字符…...

SparkBug解决:Type mismatch; found : org.apache.spark.sql.Column required: Double

def assginFlag(aizmuth:Double):Option[Int] {val interval 0.5val index (aizmuth / interval ).toIntif (index > 0 && index < 720 ) Some(index 1) else None} assginFlag方法中的条件判断条件 (index > 0 && index < 720) 返回的是一个布…...

MQ之————如何保证消息的可靠性

MQ之保证消息的可靠性 1.消费端消息可靠性保证&#xff1a; 1.1 消息确认&#xff08;Acknowledgements&#xff09;&#xff1a; 消费者在接收到消息后&#xff0c;默认情况下RabbitMQ会自动确认消息&#xff08;autoAcktrue&#xff09;。为保证消息可靠性&#xff0c;可以…...

TrollInstallerX官方一键安装巨魔商店

TrollInstallerX是巨魔官方开发的一款一键巨魔商店安装器&#xff0c;完美支持iOS 14.0 – 16.6.1的设备&#xff0c;操作非常简单&#xff0c;TrollInstallerX依然有个小小的限制&#xff0c;部分机型&#xff0c;还是要采用间接安装方法。 一&#xff0c;直接安装方法 通过…...

生成随机图片验证码

随着互联网的不断发展&#xff0c;安全性问题日益突出。为了保障用户账号的安全性&#xff0c;很多网站都引入了验证码机制。验证码是一种区分用户是计算机还是人的公共全自动程序&#xff0c;可以有效防止恶意攻击和自动化脚本的滥用。本文将介绍如何使用Python生成随机图片验…...

【0280】《数据库系统概论》阅读总结(附xmind思维导图)

0. 阅读进展 选择性地读取了《数据库系统概论》一书中的第13、14章节&#xff0c;并对这两章节中较为重点的内容作了总结和归纳&#xff1b;然后以xmind导图形式给出。 1. xmind思维导图 Xmind附件&#xff1a;...

数据结构(二)----线性表(顺序表,链表)

目录 1.线性表的概念 2.线性表的基本操作 3.存储线性表的方式 &#xff08;1&#xff09;顺序表 •顺序表的概念 •顺序表的实现 静态分配&#xff1a; 动态分配&#xff1a; 顺序表的插入&#xff1a; 顺序表的删除&#xff1a; 顺序表的按位查找&#xff1a; 顺序…...

为什么你选择成为一名程序员?

文章目录 ✍选择成为程序员&#xff1a;兴趣与职业发展的交汇&#x1f48e;1 兴趣的驱动&#x1f48e;2 职业发展的需求&#x1f48e;3 结语 ✍选择成为程序员&#xff1a;兴趣与职业发展的交汇 在当今数字化时代&#xff0c;程序员已经成为一个备受瞩目的职业。无论是因为对技…...

【Android】系统启动流程分析 —— SystemServer 处理过程

本文基于 Android 14.0.0_r2 的系统启动流程分析。 SystemServer 进程主要用于创建系统服务&#xff0c;我们熟知的 AMS、WMS 和 PMS 都是由它来创建的&#xff0c;因此掌握 SystemServer 进程是如何启动的&#xff0c;它在启动时做了哪些工作是十分必要的。 一、源码解析 Zyg…...

Web前端—属性描述符

属性描述符 假设有一个对象obj var obj {a:1 }观察这个对象&#xff0c;我们如何来描述属性a&#xff1a; 值为1可以重写可以遍历 我们可以通过Object.getOwnPropertyDescriptor得到它的属性描述符 var desc Object.getOwnPropertyDescriptor(obj, a); console.log(desc);我…...

SpringBoot及其特性

0.前言 Spring 框架提供了很多现成的功能。那么什么是 Spring Boot&#xff1f;使用 Spring 框架&#xff0c;我们可以避免编写基础框架并快速开发应用程序。为了让 Spring 框架提供基础框架&#xff0c;我们需要向 Spring 框架描述有关我们的应用程序及其组件的信息。 不只是…...

「JavaEE」初识进程

初识进程 &#x1f349;进程&#x1f34c;操作系统的进程管理 &#x1f349;PCB 重要属性&#x1f34c;进程的身份标识&#x1f34c;内存指针&#x1f34c;文件描述符表&#x1f34c;进程的状态&#x1f34c;优先级&#x1f34c;记账信息&#x1f34c;上下文 &#x1f349;内存…...

计算机视觉——图像特征提取D2D先描述后检测特征提取算法原理

概述 局部特征提取是计算机视觉中的一个重要任务&#xff0c;它旨在从图像中提取出能够代表图像局部结构和外观信息的特征。这些特征通常用于图像匹配、物体识别、三维重建、跟踪和许多其他应用。传统方法&#xff0c;如尺度不变特征变换&#xff08;SIFT&#xff09;&#xf…...

The “from“ argument must be of type string. Received undefined——vue报错记录

今天在用机器人打包测试环境时&#xff0c;一直报错&#xff1a; The "from" argument must be of type string. Received undefined 啥意思呐&#xff1f; 百度也没有找到对应的问题所在。 下面写一下我的解决方法&#xff1a; vue.config.js 在vue.config.js中…...

汽车4S行业的信息化特点与BI建设挑战

汽车行业也是一个非常大的行业&#xff0c;上下游非常广&#xff0c;像主机厂&#xff0c;上游的零配件&#xff0c;下游的汽车流通&#xff0c;汽车流通之后的汽车后市场&#xff0c;整个链条比较长。今天主要讲的是汽车流通&#xff0c;汽车4S集团。一个汽车4S集团下面授权代…...

JSX 和 HTML 之间的区别

JSX和 HTML 都是用于创建和构建网页的标记语言&#xff0c;但它们有一些关键的区别。 1. JSX 是 JavaScript 的语法扩展&#xff0c;而 HTML 是一种标记语言。 2. JSX 允许您在语法中包含表达式和函数&#xff0c;而 HTML 只允许静态文本。 3. JSX 通常用于 React 应用程序&…...

AI日报:GPT-4-Turbo正式版自带读图能力;Gemini1.5Pro开放API;SD3将于4月中旬发布;抖音宫崎骏AI特效爆火

欢迎来到【AI日报】栏目!这里是你每天探索人工智能世界的指南&#xff0c;每天我们为你呈现AI领域的热点内容&#xff0c;聚焦开发者&#xff0c;助你洞悉技术趋势、了解创新AI产品应用。 新鲜AI产品点击了解&#xff1a;AIbase - 智能匹配最适合您的AI产品和网站 &#x1f4f…...

IDEA 宝贝插件

1. Codota— 代码智能提示 Codota还包含一个网站&#xff1a;https://www.codota.com/code 2.Alibaba Java Code Guidelines— 阿里巴巴 Java 代码规范 3. SequenceDiagram —— 调用链路自动生成时序图 4. google-java-format —— 代码自动格式化...

[C语言][数据结构][链表] 单链表的从零实现!

目录 零.必备知识 1.一级指针 && 二级指针 2. 节点的成员列表 a.数据 b.指向下一个节点的指针. 3. 动态内存空间的开辟 (malloc-calloc-realloc) 一.单链表的实现与销毁 1.1 节点的定义 1.2 单链表的尾插 1.3 单链表的头插 1.4 单链表的尾删 1.5 单链表的头删 1…...

oracle rac打补丁后sqlplus / as sysdba ora-12537

sqlplus / as sysdba 报错&#xff1a; ORA-12537: TNS:connection closed 检查用户属组&#xff1a; [rootrac1 ~]# id oracle uid1102(oracle) gid1101(oinstall) groups1101(oinstall),1102(dba) [rootrac1 ~]# id grid uid1101(grid) gid1101(oinstall) groups1101(oin…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...