Redis数据结构---字符串

字符串类型是Redis最基础的数据结构 ,键都是字符串类型
其他几种数据结构都是在字符串类型基础上构建的

字符串类型的值实际可以是字符串(简单的字符串、 复杂的字符串(例如JSON、 XML) ) 、 数字(整数、 浮点数) , 甚至是二进制(图片、 音频、 视频) , 但是值最大不能超过512MB

常用命令:

设置值
set key value [ex seconds] [px milliseconds] [nx|xx]
set命令有几个选项:
  ·ex seconds: 为键设置秒级过期时间。
  ·px milliseconds: 为键设置毫秒级过期时间。
  ·nx: 键必须不存在, 才可以设置成功, 用于添加。
  ·xx: 与nx相反, 键必须存在, 才可以设置成功, 用于更新。
除了set选项, Redis还提供了setex和setnx两个命令,它们的作用和ex和nx选项是一样的

获取值
get key

批量设置值
mset key value [key value ...]

批量获取值
mget key [key ...]

注:批量操作节约了网络开销时间,提高业务处理效率。但是要注意的是每次批量操作所发送的命令数不是无节制的,如果数量过多可能造成Redis阻塞或者网络拥塞

计数(自增)
incr key
incr命令用于对值做自增操作, 返回结果分为三种情况:
  ·值不是整数, 返回错误。
  ·值是整数, 返回自增后的结果。
  ·键不存在, 按照值为0自增, 返回结果为1。
除了incr命令, Redis提供了decr( 自减) 、 incrby( 自增指定数字) 、decrby( 自减指定数字) 、 incrbyfloat( 自增浮点数)
  decr key
  incrby key increment
  decrby key decrement
  incrbyfloat key increment

不常用命令

追加值
append key value

字符串长度
strlen key

设置并返回原值
getset key value

设置指定位置的字符
setrange key offeset value

获取部分字符串
getrange key start end

Redis数据结构---字符串

内部编码

字符串类型的内部编码有3种:

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

Redis会根据当前值的类型和长度决定使用哪种内部编码实现

典型使用场景:

缓存功能

计数

共享session

限速

其他

Redis没有命令空间,而且也没有对键名有强制要求( 除了不能使用一些特殊字符) 。但设计合理的键名, 有利于防止键冲突和项目的可维护性,比较推荐的方式是使用“业务名:对象名:id:[属性]”作为键名( 也可以不是分号)