Redis字符串类型

从今天开始我将重点分享一下Redis中的5种数据结构,今天我们学习一下第一种数据结构字符串。字符串是Redis中的最基础的数据结构。我们保存到Redis中的key,也就是键,就是字符串结构的,除此之外,我们以后学习的其它数据结构,也是在字符串的基础上设计的,可见字符串结构对于Redis是多么的重要。字符串中的值虽然是字符串但是可以保存很多种类型的如:简单的字符串、JSON、XML、二进制等等。但有一点要特别注意,就是在Redis中字符串类型的值最大只能保存512MB。


img


  • 命令
  1. 设置值
set key value [EX seconds] [PX milliseconds] [NX|XX]

img

set命令有几个非必须的选项,下面我们看一下它们具体的说明

  • EX seconds:为键设置秒级过期时间
  • PX milliseconds:为键设置毫秒级过期时间
  • NX:键必须不存在,才可以设置成功,用于添加
  • XX:键必须存在,才可以设置成功,用于更新

img

下面我们看一下setnx和setxx命令在实际的开发中,有什么作用呢?我们知道setnx命令只有当然key不存在的时候才能设置成功,换句话说,也就是同一个key在执行setnx命令时,只能成功一次,并且由于Redis的单线程命令处理机制,即使多个客户端同时执行setnx命令,也只人有一个客户端执行成功。所以,正是基于setnx命令的这种特性,所以setnx命令可以作为分布式锁的一种解决方案。


2.获取值

get key

img


3.批量设置值

mset key value

img


4.批量获取值

mget key

img

如果有些键不存在,那么它的值将为nil也就是空,并且返回的结果,就是按照传入键的顺序返回的。

img


5.计数

incr key

incr命令用于对值做自增操作,返回的结果分为3种情况:

  • 如果值不是整数,那么返回的一定是错误
  • 如果值是整数,那么返回自增后的结果
  • 如果键不存在,那么就会创建此键,然后按照值为0自增, 就是返回1

img

除此之外,在Redis中除了有incr自增命令外,还提供了很多其它的有关对数字处理的命令。例如:

decr key 自减
incrby kek increment 自增指定数字
decrby key decrement 自减指定数字
incrbyfloat key increment 自增浮点数

img


6.追加值

append key value

append命令可以向字符串尾部追加值。
img


7.字符串长度

strlen key

img

由于每个中文占用3个字节,所以jilinwula这个键,返回是字符串长度为12,而不是4。


8.设置并返回原值

getset key value

img


9.设置指定位置的字符

setrange key offeset value

img


10.获取部分字符串

getrange key start end

img

  • 时间复杂度

在Redis中执行任何命令时,都有相应的时间复杂度的,复杂度越高也就越费时间,所以在执行Redis中的命令时,如果要执行的命令复杂度越高,就越要慎重。下面是字符串命令时间复杂度类型表:

命令时间复杂度
set key valueO(1)
get keyO(1)
del keyO(k) k是键的个数
mset key valueO(k) k是键的个数
mget keyO(k) k是键的个数
incr keyO(1)
decr keyO(1)
incrby key incrementO(1)
decrby keky incrementO(1)
incrbyfloat key iincrementO(1)
append key valueO(1)
strlen keyO(1)
setrange key offset valueO(1)
getrange key start endO(n) n是字符串长度
  • 内部编码

在Redis中字符串类型的内部编码有3种。

  • int:8个字节的长整型
  • embstr:小于等于39个字节的字符串
  • raw:大于39个字节的字符串

img


原文地址:jilinwula.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值