• 速通Redis基础(一):掌握Redis的字符串类型和命令


    目录

    字符串(String)

    常见命令

    SET

    GET

    MSET&MGET

    SETNX 

    INCR

    INCRBY 

    DECR

     DECRBY

    INCRBYFLOAT

    APPEND

    GETRANGE

    SETRANGE

    STRLEN 

    Redis字符串类型命令总结


    Redis(Remote Dictionary Server)是一个高性能的开源键值存储系统,广泛用于构建快速、可扩展的应用程序。Redis提供了多种数据类型和丰富的命令集,使其成为一个强大的数据存储和缓存解决方案。在本篇博客中,我们将介绍Redis的基本数据类型和常用命令,希望大家多多支持呀😁


    Redis支持多种数据类型,每种类型都具有不同的用途和特性。以下是Redis的主要数据类型:

    字符串(String)

    字符串是Redis中最简单的数据类型,它可以存储文本或二进制数据。Redis的字符串是可变的,可以对其进行追加、截取和操作。

    常见命令

    SET

    语法:

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

    时间复杂度:O(1) 

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

     如下代码示例:

    SET 命令还可以支持多种选项来影响它的行为:

    EX seconds⸺使用秒作为单位设置 key 的过期时间。

    设置name zhangsan的过期时间为10秒

    十秒钟之后获取:


    PX milliseconds⸺使用毫秒作为单位设置 key 的过期时间。

    设置name zhangsan的过期时间为1000毫秒(再获取很快就返回nil了~)


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

    就像下面所示,我没有name这个key才能插入,如果存在就不执行并且返回nil


    XX ⸺只在 key 存在时才进行设置,即如果 key 之前不存在,设置不执行。

    如下图所示,存在才能设置,我们看到zhangsan被修改为lisi了~


    返回值:

    1. 如果设置成功,返回 OK。

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

    GET

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

    语法:

    GET key

    时间复杂度:O(1)

    返回值:

    key 对应的 value,或者 nil 当 key 不存在。 

    MSET&MGET

    MEST

    ⼀次性设置多个 key 的值。

    语法:

    MSET key value [key value ...]

    时间复杂度:O(N) N 是 key 数量

    返回值:永远是 OK

    MGET

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

    语法:

    MGET key [key ...]

    时间复杂度:O(N) N 是 key 数量

    返回值:对应 value 的列表

    示例:

    使用 mget / mset 由于可以有效地减少了网络时间,所以性能相较更高。假设网络耗 时 1 毫秒,命令执行时间耗时 0.1 毫秒,则执行时间如图所示。

    所以使用批量操作,可以有效提高业务处理效率,但是要注意,每次批量操作所发送的键的数量也不是无节制的,否则可能造成单⼀命令执行时间过长,导致 Redis 阻塞。  

    SETNX 

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

    语法:

    SETNX key value

    时间复杂度:O(1) 

    INCR

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

    语法:
     

    INCR key

    时间复杂度:O(1)

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

    示例:

    INCRBY 

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

    语法:

    INCRBY key decrement

    时间复杂度:O(1)

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

    示例:

    DECR

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

    语法:

    DECR key

    时间复杂度:O(1)

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

    示例:

     DECRBY

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

    语法:

     DECRBY key decrement

    时间复杂度:O(1)

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

    示例:

    INCRBYFLOAT

    将 key 对应的 string 表⽰的浮点数加上对应的值。如果对应的值是负数,则视为减去对应的值。如果 key 不存在,则视为 key 对应的 value 是 0。如果 key 对应的不是 string,或者不是⼀个浮点数,则报 错。允许采⽤科学计数法表⽰浮点数。

    语法:

    INCRBYFLOAT key increment

    时间复杂度:O(1)

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

    示例:

    APPEND

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

    语法:

    APPEND KEY VALUE

    时间复杂度:O(1)

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

    示例:

    GETRANGE

    返回 key 对应的 string 的子串,由 start 和 end 确定(左闭右闭)。可以使用负数表示倒数。-1 代表 倒数第⼀个字符,-2 代表倒数第⼆个,其他的与此类似。超过范围的偏移量会根据 string 的长度调整成正确的值。

    语法:

    GETRANGE key start end

    时间复杂度:O(N). N 为 [start, end] 区间的⻓度. 由于 string 通常⽐较短, 可以视为是 O(1)

    返回值:string 类型的子串

    示例:

    SETRANGE

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

    语法:

    SETRANGE key offset value

    时间复杂度:O(N), N 为 value 的长度. 由于⼀般给的 value ⽐较短, 通常视为 O(1).

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

    示例:

    STRLEN 

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

    语法:

    STRLEN key

    时间复杂度:O(1)

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

    示例:

    Redis字符串类型命令总结

    命令执行效果时间复杂度
    set key value [key value...]设置 key 的值是 valueO(k), k 是键个数
    get key获取 key 的值O(1)
    del key [key ...]删除指定的 keyO(k), k 是键个数
    mset key value [key value ...]批量设置指定的 key 和 valueO(k), k 是键个数
    mget key [key ...]批量获取 key 的值O(k), k 是键个数
    incr key指定的 key 的值 +1O(1)
    decr key指定的 key 的值 -1O(1)
    incrby key n指定的 key 的值 +nO(1)
    decrby key n指定的 key 的值 -nO(1)
    incrbyfloat key n指定的 key 的值 +nO(1)
    append key value指定的 key 的值追加 valueO(1)
    strlen key获取指定 key 的值的长度O(1)
    setrange key offset value覆盖指定 key 的从 offset 开始的部分值O(n),n 是字符串长度, 通常视为 O(1)
    getrange key start end获取指定 key 的从 start 到 end 的部分值O(n),n 是字符串长度, 通常视为 O(1)

    本节就到这里啦,希望大家支持支持🤩

  • 相关阅读:
    ZX297520V3T:Codec NAU88C22驱动调试
    FMC子卡设计资料:FMC210-1路1Gsps AD、1路2.5Gsps DA的FMC子卡
    C# CAD备忘录
    基于gewe制作第一个微信聊天机器人
    python数据类型
    【实验】Hadoop-2.7.2+zookeeper-3.4.6完全分布式环境搭建(HDFS、YARN HA)转载
    并查集模板及思想
    第9章——虚拟内存
    Linux基础IO(二)
    4.10、matlab生成脉冲序列:pulstran()函数
  • 原文地址:https://blog.csdn.net/m0_62468521/article/details/133588210