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。
标签:返回,key,数据类型,Redis,value,哈希,表中,字符串 From: https://blog.csdn.net/peaceLT/article/details/140668651