Redis学习数据类型(一)字符串命令

Redis中的字符串类型是基本数据类型,支持设置、获取、检查、修改等功能,包括设置键值对的过期时间、检查键是否存在、获取子字符串、位操作以及数值增加减少等操作。这些操作都是原子性的,确保数据一致性。
摘要由CSDN通过智能技术生成

1Redis数据类型字符串

字符串类型是redis种最基本的数据类型,它是二进制安全的,任何形式的字符串那都可以存储,包括二进制、序列化后的数据,JSON化的对象,甚至一张经Base64编码后的图片。String类型的键最大能存储512MB的数据。

1.1设置键值对

1.set命令:设置键值对

命令格式:

Set key value [EX seconds] [PX milliseconds] [NX|XX]

使用Set命令将字符串值value设置到key中。如果key中已经存在其他值,则在执行SET命令后,将覆盖旧值,并忽略类型。针对某个带有生存时间的key来说,当SET命令执行成功时,这个key上的生存时间将会被移除。

SET命令的可选参数如下。

·EX seconds:用于设置key的过期时间为多少秒。其中,SET key value EX seconds等价于SETEX key seconds value.

·PX milliseconds:用于设置key的过期时间为多少毫秒(milliseconds)。其中,SET key value PX milliseconds等价于PSETEX key milliseconds value。

·NX:表示key不存在,才对key进行设置操作。其中,SET key value NX等价于 SETNX key value

·XX:表示当key不存在时,才对key进行设置操作。

返回值:如果SET 命令设置成功,则会返回OK。如果设置了NX或XX,但因为条件不足而设置失败,则会返回空批量回复(NULL Bulk Reply).

2.MSET命令:设置多个键

命令格式:

MSET key value [key value...]

使用MEST命令同时设置多个键值对。如果某个key已经存在,那么MSET命令会用新值覆盖。MSET命令是一个原子性操作,所以给定key都会在同一时间内被设置更新,不存在key被更新了而另一个key没有被更新的情况。

返回值:总数返回OK,因为MSET不可能设置失败。

3.SETNX命令:设置不存在的键值对

命令格式:

SETNX Key value

SETNX 是 set if not exists 的缩写。如果key不存在,则设置值,当且仅当key不存在时。如果key已经存在了,则SETNX什么也不做。

返回值:SETNX命令设置成功返回1,设置失败返回0.

4.MSETNX命令:设置多个不存在的键值对

命令格式:

MSETNX key value [key value...]

使用MSETNX命令同时设置多个键值对,当且仅当给定所有key都不存在设置。与此MSET命令类似,如果有一个给定key已经存在,那么MSETNX命令也会拒绝执行所有给定Key的设置操作。MSETNX命令是原子性的,它可以用看来设置多个不同key表示不同字段的唯一逻辑对象,所以字段要么全部被设置,要么全部设置失败。

返回值:所有key设置成功返回1,要么所有给定的key都设置失败,则返回失败。

1.2获取键值对

1.GET命令:获取键值对的值

命令格式:

GET key

使用GET命令获取key中设置的字符串值。如果key中存储的值不是字符串类型的,则会返回一个错误,因为GET命令只能用于处理字符串的值;当key不存在时,返回nil.

返回值:当Key存在时,返回key所对应的值;如果Key不存在,则返回nil;如果key不是字符串类型,则返回错误。

2.MGET命令:获取多个键值对的值

命令格式:

MGET key [key...]

使用MGET命令同时返回多个给定key的值,key之间使用空格隔开。如果在给定的key中有不存在的key,那么这个key返回值为nil。

返回值:一个包含所有给定key的值的列表。

3.GETRANGE命令:获取键的子字符串值

命令格式:

GETRANGE key start end

使用GETRANGE命令来获取key中字符串值从start开始到end结束的子字符串,下标从0开始。start和end参数是整数,可以取负值。当取负值时,表示从字符串最后开始计数,-1表示最后一个字符串,-2表示倒数第二个字符,以此类推。

1.3键值对的偏移量

1.SETBIT命令:设置键的偏移量

命令格式:

SETBIT key offset value

使用SETBIT命令对key所存储的字符串值设置或清除指定偏移量上的位(bit)。value参数值决定了位的设置或清除,value值取0或1.当key不存在时,自动生成一个新的字符串。这个字符串是动态的,它可以扩展,以确保将value保存到指定的偏移量上。当这个字符串扩展时,使用0来填充空白位置。offset参数必须是大于或等于0,并且小于2^32次方的正整数。在默认情况下,bit初始化为0。

返回值:返回字符串值指定偏移量上的位(bit)。

2.GETBIT命令:获取键的偏移量值

命令格式:

GETBIT key offset

对key所存储的字符串值,使用GETBIT命令来获取指定偏移量上的位。当offset的值超过了字符串的最大长度,或者key不存在,返回0;

3.设置的生存时间

命令格式:

SETEX key seconds value

使用SETEX命令将value值设置到key中,并设置key的生存时间位多少秒(seconds)。

如果key存在,则SETEX命令将覆写旧值。

它等价于:

SET key value EXPIRE key seconds

SETEX命令是一个原子性命令,它设置value与设置生存时间是在同一时间完成的。

返回值:设置成功时返回OK;当seconds参数不合法时,返回错误;

4.设置生存时间(毫秒)

命令格式:

PSETEX key milliseconds value

使用PSETEX命令设置key的生存时间,以毫秒为单位。设置成功时返回OK。

以毫秒的形式,设置键的时间。

1.5键值对的值操作

1.SETRANGE命令:替换键的值

SETRANGE key offset value

使用SETRANGE命令从指定的位置(offset)开始将key的值替换为新的字符串。比如旧值为hello word,执行命令SETRANGE 5 Redis,表示从5下标位置开始 替换为新的字符串redis,其结果为helloredis。如果有不存在的key,就当作空白字符串处理。

SETRANGE 命令会确保字符串足够长,以便将value设置在指定的偏移量上。如果给定Key原来存储的字符串长度比偏移量小,那么原字符和偏移量之间的空白将用零字节来填充。

注意:offset的最大偏移量是2^29-1(536870911),因为Redis字符串的大小被限制在512MB以内。假如需要使用比这更大的空间,则可以使用多个key来存储。

返回值:返回执行SERANGE命令之后的字符串的长度。

2.GETSET命令:为键设置新值

命令格式:

GETSET key value

使用GETSET命令将给定的值设置为value,并返回key的旧值。当key存在但不是字符串类型时,将会返回错误。

返回值:返回给定Key的旧值。如果Key不存在,则返回nil;如果key存在但不是字符串类型,则返回错误。

3.APPEND命令:为键追加值

命令格式:

APPEND key value

如果key存在且是字符串类型的,则将value值追加到key旧值的末尾。如果Key不存在,则将key设置值为value。

返回值:返回值追加value之后,key中的字符串的长度。

1.6键值对的计算

1.BITCOUNT命令:计算比特位数量

命令格式:

BITCOUNT key [start] [end]

使用BITCOUNT命令计算在给定的字符串中被设置为1的比特位数量。它有两个参数:start 和end。如果不设置这两个参数,则表示他会对整个字符串进行计算;如果指定了这两个参数值,则可以让计数只在特定的位上进行。start和end参数都是整数值,可以取负数,比如,-1表示字符串的最后一个字节,-2表示字符串的倒数第二个字节,以此类推。

如果key不存在,就会当作空字符串来处理,其计数结果为0。

返回值:执行BITCOUNT命令之后,返回被设置为1的位的数量。

2.BITOP命令:对键进行位元运算

命令格式:

BITOP operation destkey key [key...]

使用BITOP命令对一个或多个保存二进制的字符串key进行位元运算,并将运算结果保存到destkey中。operation表示位元操作符,它可以是AND、OR、NOT、XOR这4种操作中的任意一种。具体操作如下。

· BITOPAND destkey key [key..]: 表示对一个或多个 key 求逻辑并,并将结果保存到destkey 中 · BITOP OR destkey key [key...]:表示对一个或多个 key 求逻辑或,并将结果保存到destkey 中。 · BITOPNOTdestkey key:表示对给定 key 求逻辑非,并将结果保存到 destkey 中。BITOPXOR destkey key[key...]:表示对一个或多个 key 求逻辑异或,并将结果保存到 destkey 中。

除NOT 操作之外,其余的操作都可以接收一个或多个 key 作为参数。当使用 BITOP 命令来进行不同长度的字符串的位元运算时,较短的那个字符串所缺少的部分将会被看作 0空的key也被看作包含0的字符串序列。 返回值: 返回保存到 destkey 中的字符串的长度,这个长度和输入 key 中最长的字符由的长度相等。

3.STRLEN命令:统计键的值的字符串长度

命令格式:

STRLEN key

使用命令STRLEN统计key的值的字符串长度。当key存储的不是字符串时,返回一个错误。当key不存在时,返回0。

1.7键值对的值增量

1.DECR命令:让键的值减1

命令格式:

DECR key

使用DECR命令将key中存储的数字值减1.如果key不存在,则key的值先被初始化为0,再执行DECR操作减1.注意,这个命令只能对数字类型的数据进行操作(自减)。如果key对应的值包含错误类型,或者字符串类型的值不能表示为数字,则将返回一个错误。DECR操作的限制在64位(bit)有符号数字表示范围之内。

返回值:返回执行DECR操作之后key的值。

2.DECRBY命令:键的值减去减量值

命令格式:

DECRBY key decrement

使用DECRBY命令将key所存储的值减去减量值decrement。如果key不存在,则key的值先被初始化为0,再执行DECRBY命令。如果DECRBY命令操作的值包含错误的类型,或者字符串类型的值不能表示为数字,则将返回一个错误。DECRBY操作的数值限制在64(bit)有符号数字表示范围之内。

返回值:返回减去减量值decrement的key的新值。

3.INCR命令:让键的值加1

命令格式:

INCR key

使用INCR命令将key中存储的数字值加1。如果key不存在,则key的值先被初始化为0,再执行INCR操作加1。注意:这个命令只能对数字类型的数据进行操作(自增)。如果INCR操作的值包含错误类型,或者字符串类型的值不能表示为数字,则返回一个错误。INCR操作的值限制在64位(bit)有符号数字表示范围之内。

返回值:返回执行INCR命令之后key的新值。

4.INCRBY命令:让键的值加上增量值

命令格式:

INCRBY key increment

使用INCRBY命令将key所存储的值加上增量值increment。如果key不存在,则key的值先被初始化为0,再执行INCRBY命令。如果INCRBY操作的值包含错误的类型,或者字符串类型的值不能表示为数字,则将返回一个错误。INCRBY操作的值限制在64位有符号数字表示范围之内。

返回值:返回加上增量值increment之后的key的新值。

5.INCRBYFLOAT命令:让键的值加上浮点数增量值

命令格式:

INCRBYFLOAT key increment

使用INCRBYFLOAT命令将key所存储的值加上浮点数增量值increment。如果key不存在,则key的值先被初始化为0,再执行INCRBYFLOAT命令。如果INCRBYFLOAT命令执行成功,那么key的值会被更新为命令执行后的新值,并且新值以字符串的形式返回给调用者。产生的新值和浮点数增量值increment都可以使用想3.0e9、4e7、8e-3这样的指数符号来表示。

在执行INCRBYFLOAT命令之后,产生的值都会以相同的形式存储,都是由一个数字、一个可选的小数点、一个任意位数的小数部分组成的。小数部分末尾的0会被忽略掉。在有特定需要时,浮点数也会转换为整数,比如2.0会被保存为2.如果INCRBYFLOAT操作的key的值不是字符串类型的,或者key所对应的值、给定的浮点数增量值increment不能表示为双精度浮点数,则会返回一个错误。

返回值:返回执行INCRBYFLOAT命令之后,无论产生的浮点数的实际精度有多长,计算结果最多也只能保留小数点后17位。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qingqingyyds

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值