redis 数据存储格式

  • redis 存储的数据格式是一个映射的关系。自身是一个 Map,其中所有的数据都是采用
  • key : value 的形式存储
  • 数据类型指的是存储的数据的类型,也就是 value 部分的类型,key 部分永远都是字符串

在其存储的空间中如果几个数据,必然会有相应的key出现。




redis hex 在线转换 redis的数据格式_redis 数据类型


如下图,name对应 张三 , sex 对应 man 。可以理解为一个名称对应一个数据,一个key对应一个value


redis hex 在线转换 redis的数据格式_redis hex 在线转换_02


string 类型

  • 存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型
  • 存储数据的格式:一个存储空间保存一个数据
  • 存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用
  • 存储方式: 一个key对应一个字符串

基本操作

  • 添加/修改 set key value
  • 获取数据 get key
  • 删除数据 del key


redis hex 在线转换 redis的数据格式_redis 数据类型_03


在redis中如果以成功失败为返回 则是返回的 integer 1(成功)或者 integer 0(失败)。当获取不到数据时会返回nil

string 类型数据的基本操作

  • 添加/修改多个数据 (m为Multiple的简写)
  • mset key1 value1 key2 value2 …
  • 获取多个数据
  • mget key1 key2 …


redis hex 在线转换 redis的数据格式_string类型转date类型_04


基本操作和set get一样 当set的值已经存在时会将新的值会替换旧值。

  • 获取数据字符个数(字符串长度)
  • strlen key
  • 如name: strlen name 返回值为4
  • 追加信息到原始信息后部(如果原始信息存在就追加,否则新建)
  • append key value

以上基本为string的7个基本的操作命令。

此时大家可能会发现 set mset 它两的功能基本上是一样的都是存放一个字符串数据,那它俩有什么区别,什么时候该用那个呢?

这个问题其实没有一个那个好,那个不好的一说。这个需要配合你的使用场景。其中主要考虑的就是它俩的执行时间,因为每次创建连接,存储数据,返回结果。这个都是需要一定的时间的。如果说存两个key,一个name,一个age。这个两个key相当较为简单,此时mset的执行时间相对两次的set所需要的时间的少的。但当数据量较大时可能mset的执行时间会很长,在因为redis是单线程操作的,这样就会导致redis的卡死,所有后续的操作都必须等待。所以当数据量较大时需要考虑适当的拆分,将一次运行的数据拆成多次处理。

string 类型数据的扩展操作

设置数值数据增加指定范围的值

  • incr key
  • incrby key increment
  • incrbyfloat key increment

设置数值数据减少指定范围的值

  • decr key
  • decrby key increment

当string的值为纯数字时就可使用以上名称对数值进行加减操作


redis hex 在线转换 redis的数据格式_string类型转date类型_05


incrby key increment 和 decrby key increment 表示给该key加或减去给定的数值。Increment的值可正可负,当incrby key increment的increment为负时可实现减的效果,decrby 同理。 如果不知道该命令是怎么使用的可以使用上期说过的help 指令进行查看。

incrbyfloat key increment 表示可以给该值增加小数。如incrbyfloat key 1.5

string 作为数值操作

  • string在redis内部存储默认就是一个字符串,当遇到增减类操作incr,decr时会转成数值型进行计算。
  • redis所有的操作都是原子性的,采用单线程处理所有业务,命令是一个一个执行的,因此无需考虑并发带来的数据影响。
  • 注意:按数值进行操作的数据,如果原始数据不能转成数值,或超越了redis 数值上限范围,将报错。9223372036854775807(java中long型数据最大值,Long.MAX_VALUE)


redis hex 在线转换 redis的数据格式_redis数据类型_06


设置数据具有指定的生命周期

  • setex key seconds value
  • psetex key milliseconds value

redis 控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作,例如:多长时间可以投一次票,验证码的有效期等等。