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.

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

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

相关文章

c++之stack_queue与反向迭代器的实现

目录 1. 简单介绍stack与queue的使用 1.1 stack的介绍与使用 stack的介绍 stack的使用 相关题目 1.2 queue的介绍与使用 queue的介绍 queue的使用 相关题目 2.stack与queue的模拟实现 容器适配器 2.1 stack的模拟实现 2.2 queue的模拟实现 2.3 priority_queu…

博客系统实现

一.准备工作 1.创建项目,把前端写好的博客静态页面拷贝到webapp目录中 2.引入依赖,这里主要用到servlet,mysql5.1.47,jacson2.15.0 3.找到右上角的edit configurations->smartTomcat->进行配置 4.数据库设计&#xff1a…

【经典算法】LeetCode 5: 最长回文子串(Java/C/Python3实现含注释说明,Medium)

目录 题目描述思路及实现方式一:动态规划法思路代码实现Java版本C语言版本Python3版本 复杂度分析 方式二:中心扩展法思路代码实现Java版本C语言版本Python3版本 复杂度分析 总结相似题目 标签(题目类型):回文串、动态规划 题目描述 给定一…

【C++】unordered 系列关联式容器

文章目录 1. unordered 系列关联式容器2. unordered_map2.1 unordered_map 的文档介绍2.2 unordered_map 的接口说明 3. unordered_set4. 在线 OJ 1. unordered 系列关联式容器 在 C 98 中,STL 提供了底层为红黑树结构的一系列关联式容器,在查询时效率可…

吴恩达AndrewNg 关于Agent工作流的分享

主要观点 🎓 基于HumanEval的测试,使用智能体工作流确实能够显著提升大语言模型的表现,有时甚至超过下一代更强大的模型。🔄 AI智能体设计包括四种模式:反思、工具使用、规划、多智能体协作。🏗️ 快速token生成对于提高AI智能体…

智慧公厕是智慧城市建设中不可或缺的一部分

智慧城市的数字化转型正在取得显著成效,各项基础设施的建设也在迅速发展,其中智慧公厕成为了智慧城市体系中不可或缺的一部分。作为社会生活中必要的设施,公共厕所的信息化、数字化、智慧化升级转型能够实现全区域公共厕所管理的横向打通和纵…

第12章 集合框架

一 集合框架概述 1.1 生活中的容器 1.2 数组的特点与弊端 一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用数组存储对象方面具有一些弊端,而Java 集合…

设计模式 -- 发布订阅模式

发布订阅模式: 订阅者把自己想订阅的事件注册到调度中心,当发布者发布该事件到调度中心,也就是该事件触发时,由调度者统一调度订阅者注册到调度中心的处理代码。 在javaScript 中我们一般使用事件模型来代替传统的发布订阅模式。 …

一文搞懂路由器2.4G和5G的区别,以及双频合一模式

我们知道,无线路由器是平时生活和工作中最常见不过的一个无线设备,通过它我们的手机、笔记本、智能电视、摄像头等,都可以接入互联网。 其实WiFi在1998年就开始使用了,当时仅仅是在欧美地区小范围使用,我们国家在2008年…

关于Ansible模块 ④

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 继《关于Ansible的模块 ①》、《关于Ansible的模块 ②》与《关于Ansible的模块 ③》之后,继续学习ansible常用模块之…

C++流程控制语句:嵌套循环案例分析【九九乘法表】

在C编程中,循环语句的嵌套是一种常见且强大的技术手段,它允许我们将多个循环结构相互嵌套,形成多维循环。不论是for循环、while循环还是do…while循环,均可以进行嵌套。 而在实践中,由于for循环具有明确的循环变量初…

[法规规划|数据概念]数据要素市场三月速递

“ 代表关注,市场活跃,发展迅速” 01—听听两会代表怎么说 在2024年的全国两会期间,数据要素作为新型的生产要素受到广泛关注,众多代表围绕数据要素市场化、立法、安全监管、人才培养及基础设施建设等方面,积极建言献策…

基于centos7安装docker+k8s+KubeSphere

实验环境:(每个服务器推荐内存为8G) 服务器 ip地址 主机名 centos7 192.168.80.1…

模型量化——NVIDIA——方案选择(PTQ、 partialPTQ、 QAT)

PTQ、 partialPTQ、 QAT 选择流程 PTQ、 partialPTQ、 QAT 咨询NVIDIA 官方后,他们的校正过程一致,支持的量化算子本质是一样的,那么如果你的算子不是如下几类,那么需要自己编写算子。参考TensorRT/tools/pytorch-quantization/py…

数据库入门-----SQL基础知识

目录 📖前言: 📑SQL概述&&通用语法: 🐳DDL: 🐻操作数据库: 🐞数据类型: 🦉操作表: 🦦DML: 语法规则&#x…

helm与k8基础

文章目录 一、helm二、K8S/K3S1.K8S基本组件1.1 资源对象1.2 核心组件1.3典型的创建 Pod 的流程1.4 Kubernetes 多组件之间的通信原理 三、容器运行时 Containerd1.查看当前k3s使用的容器运行时CRI2.K3S修改docker为运行环境3. Containerd 参考 一、helm Helm是Kubernetes的包…

吴恩达机器学习理论基础解读—线性模型(单一特征拟合)

吴恩达机器学习理论基础——线性模型 机器学习最常见的形式监督学习,无监督学习 线性回归模型概述 应用场景一:根据房屋大小预测房价 应用场景二:分类算法(猫狗分类) 核心概念:将训练模型的数据称为数…

使用C语言函数对数组进行操作

前言 在我们了解数组和函数之后,我们对数组和函数进行结合,之后完成一些操作吧 题目描述 杰克想将函数与数组结合进行一些操作,以下是他想要达到的效果,请你帮帮他吧! 创建一个整型数组,完成对数组的操作 1…

Taro框架中的H5 模板基本搭建

1.H5 模板框架的搭建 一个h5 的基本框架的搭建 基础template 阿乐/H5 Taro 的基础模板

人民网至顶科技:《开启智能新时代:2024中国AI大模型产业发展报告发布》

​3月26日,人民网财经研究院与至顶科技联合发布《开启智能新时代:2024年中国AI大模型产业发展报告》。该报告针对AI大模型产业发展背景、产业发展现状、典型案例、挑战及未来趋势等方面进行了系统全面的梳理,为政府部门、行业从业者以及社会公…