Redis—String数据类型及其常用命令详解

文章目录

  • Redis概述
  • 1.Redis-String数据类型概述
  • 2.常用命令
      • 2.1 SET:添加或者修改已经存在的一个String类型的键值对
      • 2.2 GET:根据key获取String类型的value
      • 2.3 MSET:批量添加多个String类型的键值对
      • 2.4 MGET:根据多个key获取多个String类型的value
      • 2.5 INCR:让一个整型的key自增1
      • 2.6 INCRBY:让一个整型的key自增并指定步长
      • 2.7 INCRBYFLOAT:让一个浮点类型的数字自增并指定步长
      • 2.8 SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行
      • 2.9 SETEX:添加一个String类型的键值对,并且指定有效期
      • 2.10 MSETNX :设置多个键值对,但只有在所有指定的键都不存在时才执行设置操作
      • 2.11 APPEND:将指定的值追加到已存在键的值末尾
      • 2.12 DECR:将指定键的值减一
      • 2.13 DECRBY:将指定键的值减去给定的整数
      • 2.14 GETDEL:获取指定键的值并将该键删除
      • 2.15 GETEX:获取一个键的值,并且可以选择性地设置该键的过期时间或者移除其过期时间
      • 2.16 GETRANGE:获取指定键(key)的字符串值中参数指定的子字符串
    • 2.17 SETRANGE:在指定的偏移量开始处替换或插入一部分字符串
      • 2.18 GETSET:设置给定键(key)对应的值,同时返回该键的旧值
      • 2.19 STRLEN:返回指定键(key)对应的字符串值的长度


Redis概述

Redis概述
在这里插入图片描述

1.Redis-String数据类型概述

  • 在 Redis 中,String 类型是最简单的存储类型,它的 value 可以是普通字符串、整数类型或浮点类型。不同格式的字符串在底层都是以字节数组形式存储,只是编码方式不同。

  • 普通字符串类型的 value 可以存储任意文本数据,而整数类型和浮点类型的 value 则分别代表整数和浮点数,可以对其进行自增、自减等操作。

  • 无论是哪种格式,String 类型的 value 在 Redis 中的最大空间不能超过 512MB。这个限制是为了确保 Redis 在内存管理方面有较好的性能表现。

  • Redis键区分大小写。
    在这里插入图片描述


2.常用命令

2.1 SET:添加或者修改已经存在的一个String类型的键值对

在这里插入图片描述

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

其中:

  • key 是要设置的键名。
  • value 是要设置的键值。
  • 可选参数 EX secondsPX milliseconds 用于设置键的过期时间,EX 表示以秒为单位设置过期时间,PX 表示以毫秒为单位设置过期时间。
  • 可选参数 NXXX 用于控制是否只在 key 不存在时进行设置,NX 表示只在 key 不存在时进行设置,XX 表示只在 key 已经存在时进行设置。
  • 如果命令执行成功,返回结果为 "OK"
redis> SET mykey "Hello"
"OK"
redis> GET mykey
"Hello"
redis> SET anotherkey "will expire in a minute" EX 60
"OK"
redis> 

使用 SET 命令将值 "Hello" 存储在键 mykey 中,命令返回结果为 "OK",表示设置成功。

使用 GET 命令来获取键 mykey 的值,返回的结果是 "Hello",表示获取成功。

使用 SET 命令创建了另一个键值对 anotherkey,并使用 EX 参数设置了它的过期时间为 60 秒,命令返回结果为 "OK",表示设置成功。


2.2 GET:根据key获取String类型的value

在这里插入图片描述

redis> GET nonexisting
(nil)
redis> SET mykey "Hello"
"OK"
redis> GET mykey
"Hello"
redis> 

2.3 MSET:批量添加多个String类型的键值对

在这里插入图片描述

MSET key1 value1 [key2 value2 ...]

其中:

  • key1key2 等是要设置的键名。
  • value1value2 等是对应键的值。

命令返回结果为 "OK",表示设置成功。

redis> MSET key1 "Hello" key2 "World"
"OK"
redis> GET key1
"Hello"
redis> GET key2
"World"
redis> 

2.4 MGET:根据多个key获取多个String类型的value

在这里插入图片描述

MGET 命令用于根据多个 key 获取对应的多个 String 类型的 value。

MGET key1 [key2 ...]
  • key1key2 等是要获取 value 的键名。
redis> SET key1 "Hello"
"OK"
redis> SET key2 "World"
"OK"
redis> MGET key1 key2 nonexisting
1) "Hello"
2) "World"
3) (nil)
redis> 

nonexisting 这个键不存在,所以对应的值为 (nil)。


2.5 INCR:让一个整型的key自增1

在这里插入图片描述

INCR key

其中:

  • key 是要增加的整型键名。

使用 SET 命令将整型值 10 存储在键 mykey 中,然后使用 INCR 命令对 mykey 的值进行自增操作,结果返回 (integer) 11,表示增加后的值为 11。

redis> SET mykey "10"
"OK"
redis> INCR mykey
(integer) 11
redis> GET mykey
"11"
redis> 
  • If the key does not exist, it is set to 0 before performing the operation. 如果该键不存在,则在执行操作前将其设置为0。
  • This operation is limited to 64 bit signed integers.INCR 命令仅适用于64位有符号整数。
  • An error is returned if the key contains a value of the wrong type or contains a string that can not be represented as integer. 如果键包含错误类型的值(非整数),或者字符串值无法表示为整数,将返回错误。
  • this is a string operation because Redis does not have a dedicated integer type.The string stored at the key is interpreted as a base-10 64 bit signed integer to execute the operation. Redis没有专门的整数类型,因此存储在键中的字符串值将被解释为十进制的64位有符号整数来执行操作。
  • Redis stores integers in their integer representation, so for string values that actually hold an integer, there is no overhead for storing the string representation of the integer.Redis以整数表示存储整数,因此对于实际保存整数的字符串值,不需要额外存储整数的字符串表示。

2.6 INCRBY:让一个整型的key自增并指定步长

在这里插入图片描述

INCRBY key increment

其中:

  • key 是要增加的整型键名。
  • increment 是增加的步长,可以是正数或负数。

使用 SET 命令将整型值 10 存储在键 mykey
使用 INCRBY 命令对 mykey 的值增加 5,结果返回 (integer) 15,表示增加后的值为 15。
使用 INCRBY 命令对 mykey 的值减少 3,结果返回 (integer) 12,表示减少后的值为 12。

redis> SET mykey 10
"OK"
redis> INCRBY mykey 5
(integer) 15
redis> INCRBY mykey -3
(integer) 12
  • If the key does not exist, it is set to 0 before performing the operation. 如果该键不存在,则在执行操作前将其设置为0。
  • This operation is limited to 64 bit signed integers.INCRBY 命令仅适用于64位有符号整数。
  • An error is returned if the key contains a value of the wrong type or contains a string that can not be represented as integer. 如果键包含错误类型的值(非整数),或者字符串值无法表示为整数,将返回错误。
  • Redis没有专门的整数类型,因此存储在键中的字符串值将被解释为十进制的64位有符号整数来执行操作。
  • Redis以整数表示存储整数,因此对于实际保存整数的字符串值,不需要额外存储整数的字符串表示。

2.7 INCRBYFLOAT:让一个浮点类型的数字自增并指定步长

在这里插入图片描述

INCRBYFLOAT key increment
  • key 是要增加的浮点键名。
  • increment 是增加的步长,可以是正数或负数,且可以包含小数部分。
redis> SET mykey 10.5
"OK"
redis> INCRBYFLOAT mykey 0.5
"11"
redis> INCRBYFLOAT mykey -1.5
"9.5"
redis> SET mykey 10.50
"OK"
redis> INCRBYFLOAT mykey 0.1
"10.6"
redis> INCRBYFLOAT mykey -5
"5.6"
redis> SET mykey 5.0e3
"OK"
redis> INCRBYFLOAT mykey 2.0e2
"5200"
redis> 
  • 如果键不存在,会先将其设置为 0.0。
  • 如果键包含错误类型的值(非字符串),或者字符串值无法解析为浮点数,会返回错误。
  • INCRBYFLOAT 使用双精度浮点数进行计算,但返回值的精确度固定为小数点后17位,多余的尾随零将被移除。
  • 对于指数形式的输入,如 1.2e3,Redis 在存储计算结果时会保持其浮点数形式。

2.8 SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行

在这里插入图片描述

SETNX 命令用于添加一个 String 类型的键值对,前提是指定的 key 不存在,如果 key 已经存在,则不执行任何操作。

SETNX is short for “SET if Not eXists”.

SETNX key value
  • key 是要设置的键名。
  • value 是要设置的值。
redis> SETNX mykey "Hello"
(integer) 1
redis> SETNX mykey "World"
(integer) 0
redis> GET mykey
"Hello"

使用 SETNX 命令尝试将 "Hello" 设置为键 mykey 的值,由于 mykey 之前不存在,所以成功执行,返回 (integer) 1

再次使用 SETNX 命令尝试将 "World" 设置为键 mykey 的值,但由于 mykey 已经存在,所以不执行任何操作,返回 (integer) 0


2.9 SETEX:添加一个String类型的键值对,并且指定有效期

在这里插入图片描述

SETEX 命令用于添加一个 String 类型的键值对,并为该键值对设置指定的过期时间(单位为秒)。如果键已经存在,则会覆盖已有的值,并设置新的过期时间。

SETEX key seconds value
  • key 是要设置的键名。
  • seconds 是键值对的过期时间,单位为秒。
  • value 是要设置的值。
redis> SETEX mykey 10 "Hello"
"OK"
redis> TTL mykey
(integer) 10

使用 SETEX 命令将值为 "Hello" 的键值对设置到键 mykey 中,并且指定过期时间为 10 秒。

使用 TTL 命令查询 mykey 的剩余过期时间,返回 (integer) 10,表示该键值对还有 10 秒过期。


2.10 MSETNX :设置多个键值对,但只有在所有指定的键都不存在时才执行设置操作

在这里插入图片描述

Sets the given keys to their respective values. MSETNX will not perform any operation at all even if just a single key already exists.

设置多个键值对,但只有在所有指定的键都不存在时才执行设置操作。

如果至少有一个键已经存在,则不会对任何键进行设置。

MSETNX key value [key value ...]
  • key value:成对出现的键值对,可以指定多个键值对。

返回值

redis> MSETNX key1 "Hello" key2 "there"
(integer) 1
redis> MSETNX key2 "new" key3 "world"
(integer) 0
redis> MGET key1 key2 key3
1) "Hello"
2) "there"
3) (nil)
redis> 

命令执行后,返回一个整数值:

  • 1 表示所有键都设置成功,且没有一个键存在。
  • 0 表示至少有一个键已经存在,没有键被设置。

注意事项

  • MSETNX 是一个原子操作,要么所有键都被设置,要么一个键都不被设置。
  • 如果需要设置的键值对中有某个键已经存在,可以考虑使用 MSET 命令来替代,MSET 会覆盖已存在的键值。
  • 在分布式环境下,使用 MSETNX 可以确保多个键的设置操作是原子的,避免并发操作导致的问题。

2.11 APPEND:将指定的值追加到已存在键的值末尾

在这里插入图片描述
APPEND 命令是 Redis 中用于将指定的值追加到已存在键的值末尾。

如果键不存在,APPEND 将创建一个新的键并将给定值作为其初始值。

通过 APPEND 命令,可以方便地向已有字符串末尾追加数据,而不需要读取和重写整个字符串。

APPEND key value
  • key:要操作的键。
  • value:要追加的值。

返回值

redis> EXISTS mykey
(integer) 0
redis> APPEND mykey "Hello"
(integer) 5
redis> APPEND mykey " World"
(integer) 11
redis> GET mykey
"Hello World"
redis> 

命令执行后,返回一个整数值,表示追加操作完成后键的值的长度。

  1. 追加值到一个不存在的键:

    APPEND mykey "Hello"
    

    如果 mykey 不存在,这个命令会创建 mykey 并将其值设置为 "Hello"。返回值是 5,因为 "Hello" 的长度是 5

  2. 追加值到一个已有的键:

    APPEND mykey " World"
    

    假设 mykey 的当前值是 "Hello",这个命令会将 " World" 追加到 "Hello" 后面,因此 mykey 的新值变成 "Hello World"。返回值是 11,因为 "Hello World" 的长度是 11

注意事项

  • APPEND 针对的是字符串类型的键。如果键的现有值不是字符串类型,会返回错误。
  • 尽管 APPEND 操作可以处理非常大的字符串,但在实际使用中需要注意字符串的大小,以避免内存问题。

2.12 DECR:将指定键的值减一

在这里插入图片描述

DECR 命令是 Redis 中用于将指定键的值减一的命令。

该键的值必须是一个可以解析为整数的字符串。

如果键不存在,Redis 会将其初始化为 0 然后再执行递减操作。

DECR key
  • key:要递减值的键。

返回值

redis> SET mykey "10"
"OK"
redis> DECR mykey
(integer) 9
redis> SET mykey "234293482390480948029348230948"
"OK"
redis> DECR mykey
(error) value is not an integer or out of range
redis> 

命令执行后,返回一个整数值,表示键在递减之后的值。

  1. 键存在且值为整数:

    假设 mykey 的当前值是 10

    DECR mykey
    

    这个命令会将 mykey 的值减一,因此新的值为 9。返回值是 9

  2. 键不存在:

    如果 mykey 不存在:

    DECR mykey
    

    Redis 会将 mykey 初始化为 0,然后对其执行递减操作。新的值为 -1。返回值是 -1

  3. 键的值不是整数:

    如果 mykey 的当前值是 "hello" 这样一个无法解析为整数的字符串:

    DECR mykey
    

    这个命令会返回一个错误,因为 "hello" 不能被解析为整数。

注意事项

  • DECR 命令只能对可以解析为整数的字符串值进行操作。
  • This operation is limited to 64 bit signed integers.对于超出 64 位带符号整数范围的值,Redis 会返回一个错误。因此需要确保数值在合理范围内。
  • DECR 操作是原子的,可以在并发环境中安全使用。

2.13 DECRBY:将指定键的值减去给定的整数

在这里插入图片描述
DECRBY 命令是 Redis 中用于将指定键的值减去给定的整数 decrement 的命令。

该键的值必须是一个可以解析为整数的字符串。

如果键不存在,Redis 会将其初始化为 0 然后再执行递减操作。

DECRBY key decrement
  • key:要递减值的键。
  • decrement:要减去的整数值。

返回值

redis> SET mykey "10"
"OK"
redis> DECRBY mykey 3
(integer) 7
redis> 

命令执行后,返回一个整数值,表示键在递减之后的值。

  1. 键存在且值为整数:

    假设 mykey 的当前值是 10

    DECRBY mykey 3
    

    这个命令会将 mykey 的值减去 3,因此新的值为 7。返回值是 7

  2. 键不存在:

    如果 mykey 不存在:

    DECRBY mykey 5
    

    Redis 会将 mykey 初始化为 0,然后对其执行递减操作,即 0 - 5 = -5。返回值是 -5

  3. 键的值不是整数:

    如果 mykey 的当前值是 "hello" 这样一个无法解析为整数的字符串:

    DECRBY mykey 2
    

    这个命令会返回一个错误,因为 "hello" 不能被解析为整数。

注意事项

  • DECRBY 命令只能对可以解析为整数的字符串值进行操作。
  • 对于超出 64 位带符号整数范围的值,Redis 会返回一个错误。因此需要确保数值在合理范围内。
  • DECRBY 操作是原子的,可以在并发环境中安全使用。

2.14 GETDEL:获取指定键的值并将该键删除

在这里插入图片描述

GETDEL 命令是 Redis 6.2 版本中引入的一个命令,用于获取指定键的值并将该键删除。

它结合了 GETDEL 操作:返回键的值,并在读取值之后删除这个键。

GETDEL key
  • key:要获取并删除的键。

返回值

redis> SET mykey "Hello"
"OK"
redis> GETDEL mykey
"Hello"
redis> GET mykey
(nil)
redis> 
  • 如果键存在,返回键的值。
  • 如果键不存在,返回 nil
  1. 键存在:

    假设 mykey 的当前值是 "Hello"

    GETDEL mykey
    

    这个命令会返回 "Hello" 并删除键 mykey

  2. 键不存在:

    如果 mykey 不存在:

    GETDEL mykey
    

    这个命令会返回 nil

使用场景

  • 一次性读取和删除:在某些情况下,你可能需要读取一个键的值并在读取后立即删除它,比如处理消息队列中的单个消息。
  • 简化操作:通过一个命令实现读取和删除操作,减少网络通信次数和代码复杂度。

注意事项

  • 原子性GETDEL 命令是原子的,即读取和删除操作是在同一个原子性操作中完成的,确保了数据一致性。
  • 版本要求GETDEL 命令需要 Redis 6.2 或更高版本支持,如果使用的是较低版本的 Redis,需要通过其他方式组合 GETDEL 操作。
    在这里插入图片描述

2.15 GETEX:获取一个键的值,并且可以选择性地设置该键的过期时间或者移除其过期时间

在这里插入图片描述
GETEX 命令是 Redis 6.2 引入的一个命令,它用于获取一个键的值,并且可以选择性地设置该键的过期时间或者移除其过期时间。

这个命令结合了 GETEXPIRE 的功能。

GETEX key [EX seconds | PX milliseconds | EXAT unix-time-seconds | PXAT unix-time-milliseconds | PERSIST]
  • key:要获取值并设置过期时间的键。
  • EX seconds:以秒为单位设置过期时间。
  • PX milliseconds:以毫秒为单位设置过期时间。
  • EXAT unix-time-seconds:指定到 Unix 时间戳(秒)设置过期时间。
  • PXAT unix-time-milliseconds:指定到 Unix 时间戳(毫秒)设置过期时间。
  • PERSIST:移除键的过期时间。

返回值

redis> SET mykey "Hello"
"OK"
redis> GETEX mykey
"Hello"
redis> TTL mykey
(integer) -1
redis> GETEX mykey EX 60
"Hello"
redis> TTL mykey
(integer) 60
redis> 
  • 如果键存在,返回键的值。
  • 如果键不存在,返回 nil
  1. EX 设置过期时间:

    假设 mykey 的当前值是 "Hello"

    GETEX mykey EX 10
    

    这个命令会返回 "Hello",同时将 mykey 的过期时间设置为 10 秒。

  2. PX 设置过期时间:

    GETEX mykey PX 5000
    

    这个命令会返回 "Hello",同时将 mykey 的过期时间设置为 5000 毫秒(5 秒)。

  3. EXAT 设置过期时间:

    GETEX mykey EXAT 1654291200
    

    这个命令会返回 "Hello",同时将 mykey 的过期时间设置为 Unix 时间戳 1654291200(例如某个具体日期和时间)。

  4. PXAT 设置过期时间:

    GETEX mykey PXAT 1654291200000
    

    这个命令会返回 "Hello",同时将 mykey 的过期时间设置为 Unix 时间戳 1654291200000 毫秒。

  5. 移除过期时间:

    GETEX mykey PERSIST
    

    这个命令会返回 "Hello",同时移除 mykey 的过期时间,使其变成永久键。

使用场景

  • 延长过期时间:在某些情况下,你可能需要读取一个键的值并延长其过期时间,例如用户会话管理。
  • 设置绝对过期时间:需要在特定时间点让键过期,而不是相对时间。
  • 移除过期时间:有时你可能需要使一个临时键变为永久键,移除其过期时间。

注意事项

  • 原子性GETEX 命令是原子的,即读取和设置过期时间操作是在同一个原子性操作中完成的,确保了数据一致性。
  • 版本要求GETEX 命令需要 Redis 6.2 或更高版本支持,如果使用的是较低版本的 Redis,需要通过其他方式组合 GETEXPIRE 操作。
    在这里插入图片描述

2.16 GETRANGE:获取指定键(key)的字符串值中参数指定的子字符串

在这里插入图片描述
GETRANGE 命令用于获取指定键(key)的字符串值中,由 startend 参数指定的子字符串。

这个命令在 Redis 2.4 版本以后可用。

GETRANGE key start end
  • key:要获取子字符串的键。
  • start:子字符串的起始位置(包括该位置的字符)。
  • end:子字符串的结束位置(包括该位置的字符)。

返回值

redis> SET mykey "This is a string"
"OK"
redis> GETRANGE mykey 0 3
"This"
redis> GETRANGE mykey -3 -1
"ing"
redis> GETRANGE mykey 0 -1
"This is a string"
redis> GETRANGE mykey 10 100
"string"
redis> 

命令返回指定键的字符串值中,由 startend 参数指定的子字符串。

假设有个键 mykey 的值为 "Hello, World!"

GETRANGE mykey 0 4

这个命令会返回 "Hello",因为从位置 0 开始到位置 4 的子字符串是 "Hello"

GETRANGE mykey 7 11

这个命令会返回 "World",因为从位置 7 开始到位置 11 的子字符串是 "World"

GETRANGE mykey 7 -1

这个命令会返回 "World!",因为从位置 7 开始到末尾的子字符串是 "World!"

注意事项

  • GETRANGE 命令使用的是 0-based 索引,即第一个字符的索引为 0。
  • 如果 start 参数超出字符串的范围,或者 end 参数小于 start 参数,那么返回的子字符串为空字符串。
  • 如果 startend 参数为负数,则表示从字符串末尾开始的偏移量,例如 -1 表示倒数第一个字符。
  • 在 Redis 中,字符串的长度是按照字节数来计算的,而非字符数。所以如果字符串包含多字节字符(如 UTF-8 编码的字符),需要特别注意子字符串的起始和结束位置。

2.17 SETRANGE:在指定的偏移量开始处替换或插入一部分字符串

在这里插入图片描述

  • 在指定的偏移量开始处替换或插入一部分字符串。

  • 如果新的字符串超出了当前字符串的长度,Redis 会自动扩展这个字符串,并用空字节填充扩展部分。

语法

SETRANGE key offset value
  • key: 要修改的键。
  • offset: 开始插入的偏移量,以字节为单位,从 0 开始。
  • value: 要插入的字符串。

返回值

SETRANGE 返回修改后字符串的长度。

示例

mykey,其值为 "Hello World"

SET mykey "Hello World"

从偏移量 6 开始,将字符串 "Redis" 插入到现有字符串中:

SETRANGE mykey 6 "Redis"

操作完成后,mykey 的值将变为 "Hello Redis"

如果偏移量超出了当前字符串的长度,Redis 会用空字节(\x00)填充扩展部分。例如:

SETRANGE mykey 11 "!"

假设 mykey 之前的值是 "Hello Redis",那么操作后,mykey 的值将变为 "Hello Redis!"

如果我们使用更大的偏移量,例如 20:

SETRANGE mykey 20 "abc"

在这种情况下,Redis 将填充空字节直到偏移量 20,然后插入 "abc"。结果是:

"Hello Redis!\x00\x00\x00\x00\x00\x00\x00\x00abc"
  1. 性能: 使用 SETRANGE 修改大字符串时可能会影响性能,因为字符串需要被复制和重新分配。
  2. 二进制安全: SETRANGE 是二进制安全的,可以处理包含空字节的字符串。
  3. 自动扩展: 如果偏移量超出当前字符串的长度,Redis 会自动扩展字符串并用空字节填充不足的部分。
    在这里插入图片描述
    在这里插入图片描述

2.18 GETSET:设置给定键(key)对应的值,同时返回该键的旧值

在这里插入图片描述
GETSET 命令用于设置给定键(key)对应的值,同时返回该键的旧值。

GETSET key value
  • key:要设置值的键。
  • value:新的值。

返回值

redis> SET mykey "Hello"
"OK"
redis> GETSET mykey "World"
"Hello"
redis> GET mykey
"World"
redis> 
  • 如果键存在,返回键的旧值。
  • 如果键不存在,返回 nil

假设有个键 mykey 的当前值为 "Hello"

  1. 使用 GETSET 命令设置新值:

    GETSET mykey "World"
    

    这个命令会返回 "Hello",因为这是 mykey 的旧值。执行完该命令后,mykey 的值变为 "World"

  2. 如果键不存在:

    假设没有 newkey 这个键:

    GETSET newkey "Foo"
    

    这个命令会返回 nil,因为 newkey 键之前不存在。执行完该命令后,newkey 的值变为 "Foo"

使用场景

  1. 原子操作GETSET 命令是原子的,它可以确保在设置新值和返回旧值之间没有其他操作干扰,这在某些需要确保数据一致性的场景中非常重要。

  2. 缓存机制:在缓存的实现中,可以使用 GETSET 来确保在更新缓存值时获取到旧的缓存内容。

注意事项

  • GETSET 会覆盖键的现有值,因此要谨慎使用,确保不会意外覆盖关键数据。
  • 如果键的值非常大,使用 GETSET 可能会导致较高的网络带宽消耗,因为它会返回旧值并传输到客户端。

2.19 STRLEN:返回指定键(key)对应的字符串值的长度

在这里插入图片描述
STRLEN 命令用于返回指定键(key)对应的字符串值的长度。

STRLEN key
  • key:要获取长度的键。

返回值

redis> SET mykey "Hello world"
"OK"
redis> STRLEN mykey
(integer) 11
redis> STRLEN nonexisting
(integer) 0
redis> 

命令返回指定键的字符串值的长度。

mykey 的值为 "Hello, World!"

STRLEN mykey

命令会返回 13

注意事项

  • STRLEN 命令可以用于获取字符串的长度,无论是 ASCII 字符还是包含多字节字符(如 UTF-8 编码的字符)。
  • 如果键不存在,那么返回值为 0
  • 如果键对应的值不是字符串类型,那么会返回一个错误。

更多的string命令可以去官网https://redis.io/docs/latest/commands/?group=string查看哦~
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前后端分离项目面试总结

一:是否登录状态 服务端登录的时候,给分配一个session用于存储数据,同时将sessionID返回给浏览器,浏览器通过cookie把sessionID存储起来,下次访问时携带上,服务端就可以通过sessionID来确定用户是否登录。 …

pdf压缩大小,PDF压缩大小不影响清晰度

你是否曾为PDF文件过大而烦恼?想要分享或上传文件时,却因为它的体积而束手无策?别担心,今天我将为大家分享一些简单实用的 PDF 压缩技巧,让你的文件轻松压缩pdf。 打开“轻云处理pdf官网”, 的网站。然后上…

安徽理工大学2计算机考研情况,招收计算机专业的学院和联培都不少!

安徽理工大学(Anhui University of Science and Technology),位于淮南市,是安徽省和应急管理部共建高校,安徽省高等教育振兴计划“地方特色高水平大学”建设高校,安徽省高峰学科建设计划特别支持高校&#…

海外注册 | 一分钟看懂英国医疗器械注册

英国医疗器械市场因其独特的地域划分而与其他国家有所不同。分为大不列颠市场(包括:英格兰、苏格兰和威尔士)和北爱尔兰市场,它们在法规要求上存在细微差别。 以下是针对这两个市场的基本要求概览: 监管机构&#xf…

ONLYOFFICE 编辑器8.1,一个功能全面的编辑器

目录 官网地址:ONLYOFFICE - 企业在线办公应用软件 | ONLYOFFICE 一、PDF编辑 二、PPT播放 1. 多样化的幻灯片样式与布局 2. 强大的文本编辑与格式化功能 3. 丰富的图形与图表插入功能 4. 灵活的过渡效果与动画设置 5. 舒适的呈现与演讲辅助功能 6. 便捷的团…

都说HCIE“烂大街”了,说难考都是假的?

在网络技术领域,华为认证互联网专家(HCIE)长期以来被视为一项高端认证,代表着专业技能和知识水平。 然而,近几年来,考证的重视度直线上升,考HCIE的人越来越多了,考过的人好像也越来越…

禁用/屏蔽 Chrome 默认快捷键

Chrome 有一些内置的快捷键,但是它并没有像其他软件一样提供管理快捷键的界面。在某些时候,当我们因为个人需求希望禁用 Chrome 某些快捷键时,又无从下手。 好在有开发者开发了 Chrome 插件,可以禁用 Chrome 快捷键的插件&#x…

ogg格式怎么转换为mp3?这四种转换方法非常好用!

ogg格式怎么转换为mp3?在当今数字化时代,音频文件格式的转换已经成为确保音频内容在各种设备和平台上无缝播放的至关重要的一环,尽管OGG格式拥有支持多声道的优势,但由于其使用率相对较低,这可能会在某些情况下导致兼容…

ES内存溢出报错问题解决方案

博主有话说&#xff1a;该博文根据实际案例编写&#xff0c;在编写过程中将敏感信息进行替换&#xff0c;可能存在矛盾的地方&#xff0c;望见谅 1 错误详情 [typecircuit_breaking_exception, reason[parent] Data too large, data for [<http_request>] would be [1256…

javascript语言ES5版本详解(一)

ES6&#xff08;es2015&#xff09; 添加类和模块 ES7&#xff08;es2016&#xff09; 增加指数运算符 (**) 增加 Array.prototype.includes ECMAScript 的一些机能和其他编程语言的类似&#xff1b;特别是 Java&#xff0c;Self&#xff0c;和 Scheme。 ECMAScript 是在宿主环…

1964springboot VUE小程序在线学习管理系统开发mysql数据库uniapp开发java编程计算机网页源码maven项目

一、源码特点 springboot VUE uniapp 小程序 在线学习管理系统是一套完善的完整信息管理类型系统&#xff0c;结合springboot框架uniapp和VUE完成本系统&#xff0c;对理解vue java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;…

dockercompose部署redis哨兵模式并集成springboot

第一步 编写compose文件 docker-compose.yml version: 3.8networks:redis-network:driver: bridgeservices:redis-master:image: redis:7.2.4container_name: redis-mastercommand: ["sh", "-c", "redis-server --protected-mode no --slave-announ…

Javascript中的this关键字指向

this关键字介绍 不同情况下的this 1.对象调用方法中的this 2.在全局使用this(单独使用) 3.函数中的this 4.函数严格模式下 5.事件中的this 6.构造函数中的this 7.箭头函数没有this call()、apply()、bind() 的用法 this关键字介绍 面向对象语言中 this 表示当前对象…

Java项目:基于SSM框架实现的电子竞技管理平台【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的电子竞技管理平台 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功能…

【C++庖丁解牛】函数栈帧的创建与销毁

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1. 寄存器2. ebp和esp是如…

记一次服务器崩溃事件

今天在安装Jenkins的时候&#xff0c;进行到插件安装这一步&#xff0c;本来一切顺利&#xff0c;结果最后安装完成之后一直进不去网页&#xff0c;显示连接超时&#xff0c;网上搜索了一圈也没发现什么相似的情况&#xff0c;当我疑惑的时候回到Linux控制台&#xff0c;发现命…

天气冷电脑不能启动找不到硬盘

https://diy.zol.com.cn/2004/0611/101994.shtml

java基于ssm+jsp 人才公寓管理系统

1管理员功能模块 管理员登录&#xff0c;通过填写用户名、密码进行登录&#xff0c;如图1所示。 图1管理员登录界面图 管理员登录进入人才公寓管理系统可以查看个人中心、住户管理、小区公告管理、停车位管理、安保人员管理、安保值班管理、房屋信息管理、外来登记管理、物品…

计算机网络 —— 应用层(电子邮件)

计算机网络 —— 应用层&#xff08;电子邮件&#xff09; 电子邮件发送电子邮件的过程SMTP特性工作流程 电子邮件格式MIME关键组件工作方式 POP/IMAPPOP&#xff08;邮局协议&#xff09;IMAP&#xff08;因特网邮件访问协议&#xff09; 基于万维网的电子邮箱特点优势常见的基…

Kafka精要

Apach Kafka 是一款分布式流处理框架&#xff0c;用于实时构建流处理应用。它有一个核心 的功能广为人知&#xff0c;即 作为企业级的消息引擎被广泛使用 kafka设计 Kafka 将消息以 topic 为单位进行归纳 将向 Kafka topic 发布消息的程序成为 producers. 将预订 topics 并消…