公司法
当前位置: 首页 法律大全

redis常见的数据类型介绍与浅析(redis字符串相关命令总结)

时间:2023-06-03 作者: 小编 阅读量: 2 栏目名: 法律大全

返回值在Redis2.6.12版本以前,SET命令总是返回OK。返回值命令在设置成功时返回1,设置失败时返回0。如果键key已经存在,那么SETEX命令将覆盖已有的值。当seconds参数不合法时,命令将返回一个错误。返回值STRLEN命令返回字符串值的长度。GETRANGE通过保证子字符串的值域不超过实际字符串的值域来处理超出范围的值域请求。返回值GETRANGE命令会返回字符串值的指定部分。本操作的值限制在64位有符号数字表示之内。

概述

redis一般用来做缓存,可能很多朋友都没有深入去学习redis的相关命令,只是涉及到安装部署而已,所以今天主要总结介绍一下redis字符串的一些命令。


SET

语法:SET key value [EX seconds] [PX milliseconds] [NX|XX]

将字符串值 value 关联到 key 。

如果 key 已经持有其他值, SET 就覆写旧值, 无视类型。

当 SET 命令对一个带有生存时间(TTL)的键进行设置之后, 该键原有的 TTL 将被清除。

ps:因为 SET 命令可以通过参数来实现 SETNX 、 SETEX 以及 PSETEX 命令的效果, 所以 Redis 将来的版本可能会移除并废弃 SETNX 、 SETEX 和 PSETEX 这三个命令。

返回值

在 Redis 2.6.12 版本以前, SET 命令总是返回 OK 。

从 Redis 2.6.12 版本开始, SET 命令只在设置操作成功完成时才返回 OK ; 如果命令使用了 NX或者 XX 选项, 但是因为条件没达到而造成设置操作未执行, 那么命令将返回空批量回复(NULL Bulk Reply)。

实例:

对不存在的键进行设置:

对已存在的键进行设置


SETNX key value

只在键 key 不存在的情况下, 将键 key 的值设置为 value 。

若键 key 已经存在, 则 SETNX 命令不做任何动作。

SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。

返回值

命令在设置成功时返回 1 , 设置失败时返回 0 。

实例:


SETEX key seconds value

将键 key 的值设置为 value , 并将键 key 的生存时间设置为 seconds 秒钟。

如果键 key 已经存在, 那么 SETEX 命令将覆盖已有的值。

SETEX 命令的效果和以下两个命令的效果类似:

SET key valueEXPIRE key seconds # 设置生存时间

SETEX 和这两个命令的不同之处在于 SETEX 是一个原子(atomic)操作, 它可以在同一时间内完成设置值和设置过期时间这两个操作, 因此 SETEX 命令在储存缓存的时候非常实用。

返回值

命令在设置成功时返回 OK 。 当 seconds 参数不合法时, 命令将返回一个错误。

实例

在键 key 不存在的情况下执行 SETEX:

键 key 已经存在, 使用 SETEX 覆盖旧值


PSETEX key milliseconds value

这个命令和 SETEX 命令相似, 但它以毫秒为单位设置 key 的生存时间, 而不是像 SETEX 命令那样以秒为单位进行设置。

返回值:命令在设置成功时返回 OK

实例:


GET key

返回与键 key 相关联的字符串值。

返回值

如果键 key 不存在, 那么返回特殊值 nil ; 否则, 返回键 key 的值。

如果键 key 的值并非字符串类型, 那么返回一个错误, 因为 GET 命令只能用于字符串值。

实例

对不存在的键 key 或是字符串类型的键 key 执行 GET 命令

对不是字符串类型的键 key 执行 GET 命令


GETSET key value

将键 key 的值设为 value , 并返回键 key 在被设置之前的旧值。

返回值

返回给定键 key 的旧值。

如果键 key 没有旧值, 也即是说, 键 key 在被设置之前并不存在, 那么命令返回 nil 。

当键 key 存在但不是字符串类型时, 命令返回一个错误。

实例


STRLEN key

返回键 key 储存的字符串值的长度。

返回值

STRLEN 命令返回字符串值的长度。

当键 key 不存在时, 命令返回 0 。

当 key 储存的不是字符串值时, 返回一个错误。

实例

获取字符串值的长度


APPEND key value

如果键 key 已经存在并且它的值是一个字符串, APPEND 命令将把 value 追加到键 key 现有值的末尾。

如果 key 不存在, APPEND 就简单地将键 key 的值设为 value , 就像执行 SET key value 一样。

返回值

追加 value 之后, 键 key 的值的长度。

实例

对不存在的 key 执行 APPEND :

对已存在的字符串进行 APPEND


SETRANGE key offset value

从偏移量 offset 开始, 用 value 参数覆盖(overwrite)键 key 储存的字符串值。

不存在的键 key 当作空白字符串处理。

SETRANGE 命令会确保字符串足够长以便将 value 设置到指定的偏移量上, 如果键 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ), 那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )进行填充。

因为 Redis 字符串的大小被限制在 512 兆(megabytes)以内, 所以用户能够使用的最大偏移量为 2^29-1(536870911) , 如果你需要使用比这更大的空间, 可以考虑使用多个 key 。

注意:当生成一个很长的字符串时, Redis 需要分配内存空间, 该操作有时候可能会造成服务器阻塞(block)。 在2010年出产的Macbook Pro上, 设置偏移量为 536870911(512MB 内存分配)将耗费约 300 毫秒, 设置偏移量为 134217728(128MB 内存分配)将耗费约 80 毫秒, 设置偏移量 33554432(32MB 内存分配)将耗费约 30 毫秒, 设置偏移量为 8388608(8MB 内存分配)将耗费约 8 毫秒。

返回值

SETRANGE 命令会返回被修改之后, 字符串值的长度。

实例

对非空字符串执行 SETRANGE 命令


GETRANGE key start end

返回键 key 储存的字符串值的指定部分, 字符串的截取范围由 start 和 end 两个偏移量决定 (包括 start 和 end 在内)。

负数偏移量表示从字符串的末尾开始计数, -1 表示最后一个字符, -2 表示倒数第二个字符, 以此类推。

GETRANGE 通过保证子字符串的值域(range)不超过实际字符串的值域来处理超出范围的值域请求。

返回值

GETRANGE 命令会返回字符串值的指定部分。

实例


INCR key

为键 key 储存的数字值加上一。

如果键 key 不存在, 那么它的值会先被初始化为 0 , 然后再执行 INCR 命令。

如果键 key 储存的值不能被解释为数字, 那么 INCR 命令将返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。

返回值

INCR 命令会返回键 key 在执行加一操作之后的值。

实例


INCRBY key increment

为键 key 储存的数字值加上增量 increment 。

如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 INCRBY 命令。

如果键 key 储存的值不能被解释为数字, 那么 INCRBY 命令将返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。

返回值

在加上增量 increment 之后, 键 key 当前的值。

实例

键存在,并且值为数字:

键不存在


INCRBYFLOAT key increment

为键 key 储存的值加上浮点数增量 increment 。

如果键 key 不存在, 那么 INCRBYFLOAT 会先将键 key 的值设为 0 , 然后再执行加法操作。

如果命令执行成功, 那么键 key 的值会被更新为执行加法计算之后的新值, 并且新值会以字符串的形式返回给调用者。

无论是键 key 的值还是增量 increment , 都可以使用像 2.0e7 、 3e5 、 90e-2 那样的指数符号(exponential notation)来表示, 但是, 执行 INCRBYFLOAT 命令之后的值总是以同样的形式储存, 也即是, 它们总是由一个数字, 一个(可选的)小数点和一个任意长度的小数部分组成(比如 3.14 、 69.768 ,诸如此类), 小数部分尾随的 0 会被移除, 如果可能的话, 命令还会将浮点数转换为整数(比如 3.0 会被保存成 3 )。

此外, 无论加法计算所得的浮点数的实际精度有多长, INCRBYFLOAT 命令的计算结果最多只保留小数点的后十七位。

返回值

在加上增量 increment 之后, 键 key 的值。

实例


DECR key

为键 key 储存的数字值减去一。

如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECR 操作。

如果键 key 储存的值不能被解释为数字, 那么 DECR 命令将返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。

关于递增(increment) / 递减(decrement)操作的更多信息, 请参见 INCR 命令的文档。

返回值

DECR 命令会返回键 key 在执行减一操作之后的值。

实例

对储存数字值的键 key 执行 DECR 命令:

对不存在的键执行 DECR 命令


DECRBY key decrement

将键 key 储存的整数值减去减量 decrement 。

如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECRBY 命令。

如果键 key 储存的值不能被解释为数字, 那么 DECRBY 命令将返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。

关于更多递增(increment) / 递减(decrement)操作的更多信息, 请参见 INCR 命令的文档。

返回值

DECRBY 命令会返回键在执行减法操作之后的值。

实例


MSET key value [key value …]

同时为多个键设置值。

如果某个给定键已经存在, 那么 MSET 将使用新值去覆盖旧值, 如果这不是你所希望的效果, 请考虑使用 MSETNX 命令, 这个命令只会在所有给定键都不存在的情况下进行设置。

MSET 是一个原子性(atomic)操作, 所有给定键都会在同一时间内被设置, 不会出现某些键被设置了但是另一些键没有被设置的情况。

返回值

MSET 命令总是返回 OK 。

实例

同时对多个键进行设置:

覆盖已有的值:


MSETNX key value [key value …]

当且仅当所有给定键都不存在时, 为所有给定键设置值。

即使只有一个给定键已经存在, MSETNX 命令也会拒绝执行对所有键的设置操作。

MSETNX 是一个原子性(atomic)操作, 所有给定键要么就全部都被设置, 要么就全部都不设置, 不可能出现第三种状态。

返回值

当所有给定键都设置成功时, 命令返回 1 ; 如果因为某个给定键已经存在而导致设置未能成功执行, 那么命令返回 0 。

实例

对不存在的键执行 MSETNX 命令

对某个已经存在的键进行设置


MGET key [key …]

返回给定的一个或多个字符串键的值。

如果给定的字符串键里面, 有某个键不存在, 那么这个键的值将以特殊值 nil 表示。

返回值

MGET 命令将返回一个列表, 列表中包含了所有给定键的值。

实例


后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下!

    推荐阅读
  • 察觉的意思(词语察觉的意思)

    接下来我们就一起去研究一下吧!察觉的意思察觉:chájué。表定在某个事情中或者某个事件中,用于发现某个事物而形成的一个表述性词语。

  • 长沙市教育考试院考点2022年3月全国计算机等级考试取消的公告

    长沙市教育考试院发布了关于取消长沙市教育考试院计算机考试中心考点2022年3月全国计算机等级考试的公告,具体的内容如下。鉴于我市新冠肺炎疫情防控最新情况,为确保广大考生和涉考工作人员身体健康,原定于3月26日至28日在我院计算机考试中心举行的2022年3月全国计算机等级考试取消,本次考试报名费将按原支付渠道全额退回,请耐心等待。因取消考试给考生带来的不便,敬请谅解!

  • 产后应该怎么做(产后着急做这事)

    等到宝妈身体得到一定的恢复之后,再根据情况酌情进行催乳。另外,宝妈在分娩时流失大量铁,所以补铁的问题也必须重视起来。

  • 备孕期间女的可以吃香菜吗(你是怎么发现自己怀孕的)

    有位闺蜜说,自己意外怀了二胎,还是老大发现的。口味突然改变怀孕后雌激素会升高,在激素作用下,孕妇体内会分泌一种叫HCG的糖蛋白,会抑制消化酶的活动,从而影响对食物的欲望。胃部不舒服不少准妈妈在孕早期会有胃胀、恶心的症状,这也跟HCG的分泌有关。

  • 年初七风俗(大年初七的习俗介绍)

    年初七风俗正月初七为人节,这一天民间有吃七宝羹、戴人胜、赠花胜、出游、登高、捞鱼等风俗。在传说里人类的始祖女娲造出了鸡狗猪羊牛马等动物后,在第七天造出了人,所以这一天是人类的生日。七宝羹是用七种菜做成的羹,应和着“初七”这个日子来食用。初七还有戴人胜的习俗,大家用彩纸、软金银等材料裁剪成小人的形状,戴于头上,表示庆祝节日。

  • 空调制热与制冷26度为啥不一样(空调制热25度与制冷25度有什么区别)

    转眼间冬天就要到来,而且新冠疫情也并未结束,怎么样才能保证家中空气的品质,保证家人健康的度过这个冬天,针对这些人们关注的问题,大金就能提供一套完整的解决方案。1969年成功研发了大金第一台家用中央空调,拉开了中央空调文化的帷幕。1982年大金第一套VRV空调系统诞生,开创了楼宇多联机时代。2004年大金家用VRV空调系统成功研发,同年在中国上市。

  • 荞麦面煮完水会变色吗(荞麦面煮完水会不会变色)

    荞麦面是中国西北地区的传统面食,其原料就是荞麦,荞麦发青发黑且又干又硬,常被加工成荞麦面。荞麦面有很多种吃法,最日常的便是煮熟食用,食用时加上各式不同的佐料即可。其次,荞麦面在经过高温煮熟之后,其面汤会呈黄色,这是属于正常现象,并非是厂家在其中添加了色素。荞麦面属于粗粮,其蛋白质含量均明显高于精细米面,是一般谷物所达不到的高含量标准,且碳水含量低,因此它是许多减肥人群的第一主食。

  • 文科生可选的专业和就业方向(文科生志愿填报)

    我们一起去了解并探讨一下这个问题吧!文科生可选的专业和就业方向

  • 2022南昌豫章中学老校区停止高中招生公告

    据南昌市豫章中学消息,豫章中学老校区自2022年秋季起停止高中招生,红角洲新校区自2022年秋季起开始招收高一新生,详见正文。

  • 纯蓝白搭配什么(蓝白永不过时的高级搭配)

    ▼50%蓝50%白上下五五分的蓝白配,通常是白衬衣搭配牛仔裤,或者是蓝衬衣搭配白色裙子。▼蓝白相间的竖条纹是必备款。蓝白条纹的T恤或是半裙都给人明亮舒适的感觉。一件设计感十足,同时面料又细腻的蓝白印花单品,不需要过多的配饰,就会让你在人群中很特别。▼牛仔蓝白衬衣要想看起来轻松随性,牛仔裤是你的首选。蓝白配,可以让你简约高级,也可以让你恬淡舒适,别再拒绝简单的高级感了,蓝白配是经典永不过时的搭配。