Redis---字符串命令

常用命令

设置值

  1. set:
  • 参数:

    • ex 设置秒级的过期时间(expire)

    • px 设置毫秒级的过期时间(pexpire)

    • nx 键不存在的时候,才可以设置成功(not exist)

    • xx 键存在的时候,才能设置成功(exist)

  • 说明:如果 value 字符串中带有空格,则该字符串需要使用双引号或单引号引起来,否则会认为 set 命令的参数数量不正确,报错。

  1. setex与psetex:
  • 格式:setex/psetex key seconds value(ex就是expire的简写)

  • 功能:不仅为 key 指定了 value,还为其设置了生存时间。setex 的单位为秒,psetex 的单位为毫秒。

  • 说明:如果 key 已经存在, 则覆写旧值。该命令类似于使用set命令并设置过期时间,不同之处是,setex和psetex是一个原子性操作,关联值和设置生存时间两个动作会在同一时间内完成,该命令在 Redis 用作缓存时,非常实用。

image-20230402155301030

  1. setnx:
  • 格式:setnx key value

  • 功能:(set if Not exist)将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key已经存在,则 setnx不做任何动作。成功,返回 1,否则,返回 0。

  • 说明:该命令等价于 set key value nx

image-20230402155944212

  1. mset与msetnx:
  • 格式:mset/msetnx key value [key value …]
  • 功能:同时设置一个或多个 key-value 对。
  • 说明:m表示multiple。如果某个给定 key 已经存在,那么 mset会用新值覆盖原来的旧值,如果这不是你所希望的效果,请考虑使用 msetnx 命令:它只会在所有给定 key 都不存在的情况下进行设置操作。mset/msetnx 是一个原子性(atomic)操作,所有给定 key 都会在同一时间内被设置,某些给定 key 被更新而另一些给定 key 没有改变的情况不可能发生。mset命令永不失败。
image-20230402161242307 image-20230402161327969

获取值

  1. get:
  • 格式:get key

  • 功能:获取 key 中设置的字符串值

  • 返回值:key存在,返回key对应的value;key不存在,返回nil

  1. mget:
  • 格式:mget key [key …]
  • 功能:返回所有(一个或多个)给定 key 的值。
  • 说明:如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。因此,该命令永不失败。

计数

  1. incr 与 decr:
  • 格式:incr key 或 decr key

  • 功能:increment,自动递增。将 key 中存储的数字值增一。decrement,自动递减。将 key 中存储的数字值减一。

  • 说明:如果 key 不存在,那么 key 的值会先被初始化为 0,然后再执行增一/减一操作。如果值不能表示为数字,那么返回一个错误提示。如果执行正确,则返回加一或者减一后的值。

image-20230402211653363

  1. incrby 与 decrby
  • 格式:incrby key increment 或 decrbykey decrement
  • 功能:将 key 中存储的数字值增加/减少指定的数值,这个数值只能是整数,可以是负数,但不能是小数。
  • 说明:如果 key 不存在,那么 key 的值会先被初始化为 0,然后再执行增/减操作。如果值不能表示为数字,那么返回一个错误提示。如果执行正确,则返回增/减后的值。

image-20230402211838125

  1. incrbyfloat
  • 格式:INCRBYFLOAT key increment
  • 功能:为 key 中所储存的值加上浮点数增量 increment 。
  • 说明:与之前的说明相同。没有 decrbyfloat 命令,但 increment 为负数可以实现减操作效果。

image-20230402212223335

不常用命令

追加(append)

  • 格式:append key value
  • 功能:如果 key 已经存在并且是一个字符串, append 命令将 value 追加到 key 原来的值的末尾。如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。
  • 说明:追加 value 之后, key 中字符串的长度。

image-20230402212602654

替换 (setrange)

  • 格式:setrange key offset value
  • 功能:用 value 参数替换给定 key 所储存的字符串值 str,从偏移量 offset 开始。
  • 说明:当 offset 值大于 str 长度时,中间使用零字节\x00 填充,即 0000 0000 字节填充;对于不存在的 key 当作空串处理。

image-20230402213600175

获取子串(getrange)

  • 格式:getrange key start end
  • 功能:返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定,包括 start 和 end 在内。
  • 说明:end 必须要比 start 大。支持负数偏移量,表示从字符串最后开始计数,-1 表示最后一个字符,-2 表示倒数第二个,以此类推。

image-20230402213155757

获取字符串长度(strlen)

  • 格式:strlen key
  • 功能:返回 key 所储存的字符串值的长度。
  • 说明:当 key 储存的不是字符串值时,返回一个错误;当 key 不存在时,返回 0 。

image-20230402214053774

设置新值返回旧值 (getset)

  • 格式:getset key value
  • 功能:将给定 key 的值设为 value ,并返回 key 的旧值。
  • 说明:当 key 存在但不是字符串类型时,返回一个错误;当 key 不存在时,返回 nil 。

image-20230406183833792

位操作命令

名称中包含 BIT 的命令,都是对二进制位的操作命令,例如,setbit、getbit、bitcount、bittop、bitfield。详见:Redis位操作命令(CSDN)

内部编码

String类型的redisObject内部对应了三种物理编码方式:int、embstr、raw

  • **int:**保存的是long型(长整型)的64位(8个字节)有符号整数。只有整数才会使用int,如果是浮点数,Redis内部会先将浮点数转换为字符串,然后保存字符串值。

  • embstr:代表的是embstr格式的简单的动态字符串(Simple Dynamic String,SDS),是可以修改的字符串,内部结构实现上类似于Java的ArrayList采用分配冗余空间的方式来减少内存的频繁分配。保存长度小于44字节的字符串。

img

  • **raw:**保存长度大于44字节的字符串

image-20230406185839312

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值