2. Redis数据类型

Redis主要支持一下几种数据类型:

  • string(字符串):基本的数据存储单元,可以存储字符串、整数或者浮点数
  • hash(哈希):一个键值对集合,可以存储多个字段。
  • list(列表):可以存储一系列的字符串元素。
  • set(集合):一个无序集合,可以存储不重复的字符串元素。
  • zset(有序集合):每个元素都有一个分数与之关联,类似集合。
  • 位图(Bitmaps):基于字符串类型,可以对每个位进行操作。
  • 超日志(HyperLogLogs):用于基数统计,可以估算集合中的唯一元素数量。
  • 地理空间(Geospatial):用于存储地理位置信息。
  • 发布/订阅(Pub/Sub):一种消息通信模式,允许客户端订阅消息通道,并接收发布到该通道的消息。
  • 流(Streams):用于消息队列和日志存储,支持消息的持久化和时间排序。
  • 模块(Modules):Redis支持动态加载模块,可以扩展Redis的功能。

 1. string(字符串)

string是redis最基本的类型,一个key对应一个value。最大能存储512MB。

string类型是二进制安全的。即string可以包含任何数据(jpg图片、序列化对象等)

命令描述
SET key value用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。
GET key返回 key 的值,如果 key 不存在时,返回 nil。 如果 key 不是字符串类型,那么返回一个错误。
GETRANGE key start end用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。
GETSET key value用于设置指定 key 的值,并返回 key 的旧值。

返回给定 key 的旧值。 当 key 没有旧值时,即 key 不存在时,返回 nil 。

当 key 存在但不是字符串类型时,返回一个错误。

GETBIT key offset用于对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
GETBIT key offset当偏移量 OFFSET 比字符串值的长度大,或者 key 不存在时,返回 0 。
MGET key1 [key2..]返回所有(一个或多个)给定 key 的值。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。
SETBIT key offset value对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
SETEX key seconds value为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。设置成功时返回 OK 。
SETNX key value在指定的 key 不存在时,为 key 设置指定的值。设置成功,返回 1 。 设置失败,返回 0 。
SETRANGE key offset value用指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始。返回被修改后的字符串长度。
STRLEN key获取指定 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。当 key 不存在时,返回 0。
MSET key value [key value ...]用于同时设置一个或多个 key-value 对。总是返回 OK 。
MSETNX key value [key value ...]用于所有给定 key 都不存在时,同时设置一个或多个 key-value 对。当所有 key 都成功设置,返回 1 。 如果所有给定 key 都设置失败(至少有一个 key 已经存在),那么返回 0 。
PSETEX key milliseconds value以毫秒为单位设置 key 的生存时间。设置成功时返回 OK 。
INCR key将 key 中储存的数字值增一。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。返回执行 INCR 命令之后 key 的值。

INCRBY key increment

将 key 中储存的数字加上指定的增量值。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。返回加上指定的增量值之后, key 的值。

INCRBYFLOAT key increment

为 key 中所储存的值加上指定的浮点数增量值。

如果 key 不存在,那么 INCRBYFLOAT 会先将 key 的值设为 0 ,再执行加法操作。返回执行命令之后 key 的值。

DECR key

将 key 中储存的数字值减一。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。返回执行命令之后 key 的值。

DECRBY key decrement

将 key 所储存的值减去指定的减量值。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。

返回减去指定减量值之后, key 的值。
APPEND key value

用于为指定的 key 追加值。

如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。

如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。

返回追加指定值之后, key 中字符串的长度。

2. hash(哈希)

redis hash是一个键值对集合,类似于一个小型的NoSQL数据库。

redis hash是一个string类型的field和value的映射表,hash适合用于存储对象。

每个哈希最多可以存储2^32-1个键值对。

命令描述
HDEL key field1 [field2]

用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。

返回被成功删除字段的数量,不包括被忽略的字段。

HEXISTS key field

用于查看哈希表的指定字段是否存在。

如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0 。

HGET key field

用于返回哈希表中指定字段的值。

返回给定字段的值。如果给定的字段或 key 不存在时,返回 nil 。

HGETALL key

用于返回哈希表中,所有的字段和值。

在返回值里,紧跟每个字段名(field name)之后是字段的值(value),所以返回值的长度是哈希表大小的两倍。

以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表。

HINCRBY key field increment

用于为哈希表中的字段值加上指定增量值。

增量也可以为负数,相当于对指定字段进行减法操作。

如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。

本操作的值被限制在 64 位(bit)有符号数字表示之内。

返回执行 HINCRBY 命令之后,哈希表中字段的值。

HINCRBYFLOAT key field increment

用于为哈希表中的字段值加上指定浮点数增量值。

如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。

返回执行 Hincrbyfloat 命令之后,哈希表中字段的值。

HKEYS key

用于获取哈希表中的所有域(field)。

返回包含哈希表中所有域(field)列表。 当 key 不存在时,返回一个空列表。

HLEN key用于获取哈希表中字段的数量。返回哈希表中字段的数量。 当 key 不存在时,返回 0 。
HMGET key field1 [field2]

于返回哈希表中,一个或多个给定字段的值。

如果指定的字段不存在于哈希表,那么返回一个 nil 值。

返回一个包含多个给定字段关联值的表,表值的排列顺序和指定字段的请求顺序一样。

HMSET key field1 value1 [field2 value2 ]

用于同时将多个 field-value (字段-值)对设置到哈希表中。

此命令会覆盖哈希表中已存在的字段。

如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作。

如果命令执行成功,返回 OK 。

HSET key field value

用于为哈希表中的字段赋值 。

如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。

如果字段已经存在于哈希表中,旧值将被覆盖。

如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。

HSETNX key field value

用于为哈希表中不存在的的字段赋值 。

如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。

如果字段已经存在于哈希表中,操作无效。

如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。

设置成功,返回 1 。 如果给定字段已经存在且没有操作被执行,返回 0 。

HVALS key

返回哈希表所有的值。

返回一个包含哈希表中所有值的列表。 当 key 不存在时,返回一个空表。

HSCAN key cursor [MATCH pattern] [COUNT count]用于迭代哈希表中的键值对。返回的每个元素都是一个元组,每一个元组元素由一个字段(field) 和值(value)组成。

3. list(列表)

list是字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或尾部(右边)

一个列表最多可以包含2^32-1个元素。

4. 集合(set)

set是string类型的无需集合。集合成员是唯一的,意味着不能出现重复的数据。集合对象的二编码可以是intset或者hashtable。

redis中集合是通过哈希表实现的,所以增删查的复杂度都是O(1)

集合中最大的成员数为2^32-1。

5. 有序集合(zset)

有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数却可以重复。

集合是通过哈希表实现的,所以增删查的复杂度都是O(1),集合中最大的成员数为2^32-1。

  • 21
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值