redis不仅仅局限于提供快速的数据存储,此外还提供了大量的功能性操作,为了满足这些功能性操作,redis提供了五种数据存储类型和大量的操作命令。redis提供这五种不同类型的数据结构本质是为了提供相应的功能,不同的数据结构适用于不同的功能。
字符串类型
这个是最常规的数据类型,对于一些整数和浮点数redis还提供了自增,自减的操作。
命令 | 语法 | 说明 | 复杂度 |
SET | SET key value [EX seconds] [PX milliseconds] [NX|XX] |
将字符串值 value 关联到 key 。 |
O(1) |
SETNX | SETNX key value | 将 key 的值设为 value ,当且仅当 key 不存在。 | O(1) |
SETEX | SETEX key seconds value | 将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。 | O(1) |
SETRANGE | SETRANGE key offset value | 用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始。 | O(M) |
SETBIT | SETBIT key offset value | 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 | O(1) |
GET | GET key | 返回 key 所关联的字符串值。 如果 key 不存在那么返回特殊值 nil 。 | O(1) |
GETBIT | GETBIT key offset | 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。 | O(1) |
GETRANGE | GETRANGE key start end | 返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。 | O(N) |
GETSET | GETSET key value | 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。 | O(1) |
INCR | INCR key | 将 key 中储存的数字值增一。 | O(1) |
INCRBY | INCRBY key increment | 将 key 所储存的值加上增量 increment 。 | O(1) |
INCRBYFLOAT | INCRBYFLOAT key increment | 为 key 中所储存的值加上浮点数增量 increment 。 | O(1) |
MGET | MGET key [key ...] | 返回所有(一个或多个)给定 key 的值。 | O(N) |
MSET | MSET key value [key value ...] | 同时设置一个或多个 key-value 对。 | O(N) |
列表类型
链表种的每个节点都是一个字符串类型,redis提供了对这个链表的插入,删除等操作。
集合类型
集合类型和链表类型的区别是,集合类型是要值唯一,且没有顺序的,redis提供了对集合类型的存取和判断等操作。
哈希类型
存储健值对的无序散列表。
命令 | 语法 | 说明 | 复杂度 |
HDEL | HDEL key field [field ...] | 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。 | O(N) |
HSET | HSET key field value | 将哈希表 key 中的域 field 的值设为 value 。 | O(1) |
HSETNX | HSETNX key field value | 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。 若域 field 已经存在,该操作无效。 | O(1) |
HGET | HGET key field | 返回哈希表 key 中给定域 field 的值。 | O(1) |
HGETALL | HGETALL key | 返回哈希表 key 中,所有的域和值。 | O(N) |
HEXISTS | HEXISTS key field |
查看哈希表 key 中,给定域 field 是否存在。 如果哈希表含有给定域,返回 1 。 如果哈希表不含有给定域,或 key 不存在,返回 0 。
|
O(1) |
HINCRBY | HINCRBY key field increment | 为哈希表 key 中的域 field 的值加上增量 increment 。
增量也可以为负数,相当于对给定域进行减法操作。 |
O(1) |
HINCRBYFLOAT | HINCRBYFLOAT key field increment | 为哈希表 key 中的域 field 加上浮点数增量 increment 。 | O(1) |
HKEYS | HKEYS key | 返回哈希表 key 中的所有域。 | O(N) |
HLEN | HLEN key | 返回哈希表 key 中域的数量。 | O(1) |
HMGET | HMGET key field [field ...] |
返回哈希表 key 中,一个或多个给定域的值。 如果给定的域不存在于哈希表,那么返回一个 nil 值。 |
O(N) |
HMSET | HMSET key field value [field value ...] | 同时将多个 field-value (域-值)对设置到哈希表 key 中。 | O(N) |
HVALS | HVALS key | 返回哈希表 key 中所有域的值。 | O(N) |
HSCAN | HSCAN key cursor [MATCH pattern] [COUNT count] |
有序集合
字符串成员与浮点数分值之间有序映射,元素的排列顺序由分值大小决定。