常用数据类型
类型 | 说明 |
---|---|
String | 字符串 |
Hash | 散列,是由与值相关联的字段组成的内容,字段和值都是字符串,类似于 JavaScript 中的对象结构 |
List | 列表,根据插入顺序排序的字符串元素的集合,它们基本上是链表 |
Set | 未排序的字符串元素集合,集合中的数据是不重复的 |
ZSet | 与 Set 类似,但每个字符串元素都与一个称为分数的浮点值相关联,元素总是按它们的分数排序,可以检索一系列元素(例如,获取前 10 名或后 10 名的数据) |
字符串(String)
-
字符串类型:它能存储任何形式的字符串,包括二进制数据;value 最多可以容纳数据大小为 512 MB;
-
添加 操作
# 设置指定 key 的值 SET key value # 同时设置一个或多个 key-value 对 MSET key value [key value ...] # 只有在 key 不存在时设置 key 的值 SETNX key value # 只有在 key 不存在时,设置一个或多个 key-value 对 MSETNX key value [key value ...]
-
删除 操作
# 通用命令:删除 1 个或多个指定的 key DEL key [key ...]
-
查询 操作
# 获取指定 key 的值 GET key # 返回 key 的子字符 GETRANGE key start end # 获取所有(一个或多个)给定 key 的值 MGET key [key ...] # 返回 key 所储存值的的长度 STRLEN key # 通用命令:查询集合中是否有指定的 key EXISTS key [key ...] # 通用命令,查询 key 的类型 TYPE key
-
修改 操作
# 设置指定 key 的值 SET key value # 将给定 key 的值设为 value ,并返回 key 的旧值 GETSET key value # 如果 key 已经存在并且是一个字符串, 将指定的 value 追加到该 key 原来值(value)的末尾 APPEND key value
-
数字值:数字值在 Redis 中以字符串保存
# 将 key 中储存的数字值增一 INCR key # 将 key 所储存的值加上给定的增量值(increment) INCRBY key increment # 将 key 中储存的数字值减一 DECR key # key 所储存的值减去给定的减量值(decrement) DECRBY key decrement
哈希(Hash)
-
哈希(也叫散列)类型:是一种字典结构,其存储了字段和字段值的映射,散列类型不能嵌套其它数据类型,一个哈希类型可以包含至少 232 - 1 个字段;
-
添加 操作
# 将哈希表 key 中的字段 field 的值设为 value HSET key field value [field value ...] # 同时将多个 field-value (域-值)对设置到哈希表 key 中 HMSET key field value [field value ...] # 只有在字段 field 不存在时,设置哈希表字段的值 HSETNX key field value
-
删除 操作
# 删除一个或多个哈希表字段 HDEL key field1 [field2] # 通用命令:删除 1 个或多个指定的 key DEL key [key ...]
-
查询 操作
# 获取所有哈希表中的字段 HKEYS key # 获取哈希表中字段的数量 HLEN key # 获取存储在哈希表中指定字段的值 HGET key field # 获取所有给定字段的值 HMGET key field1 [field2] # 获取在哈希表中指定 key 的所有字段和值 HGETALL key # 查看哈希表 key 中,指定的字段是否存在 HEXISTS key field # 获取哈希表中所有值 HVALS key # 迭代哈希表中的键值对 # - cursor:游标 # - pattern:匹配的模式 # - count:指定从数据集里返回多少元素,默认值为 10 HSCAN key cursor [MATCH pattern] [COUNT count]
-
修改 操作
# 将哈希表 key 中的字段 field 的值设为 value HSET key field value [field value ...] # 为哈希表 key 中的指定字段的整数值加上增量 increment HINCRBY key field increment
列表(List)
-
列表类型
-
添加 操作
# 将一个或多个值插入到列表头部 LPUSH key element [element ...] # 在列表的元素前或者后插入元素 LINSERT key BEFORE|AFTER pivot value # 将一个值插入到已存在的列表头部 LPUSHX key value # 通过索引设置列表元素的值 LSET key index value # 在列表中添加一个或多个值 RPUSH key value1 [value2] # 将一个值插入到已存在的列表尾部 RPUSHX key value
-
删除 操作
# 移出并获取列表的第一个元素 LPOP key # 移出并获取列表的最后一个元素 RPOP key # 移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 BLPOP key1 [key2 ] timeout # 移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 BRPOP key1 [key2 ] timeout # 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它 # 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 BRPOPLPUSH source destination timeout # 移除列表的最后一个元素,并将该元素添加到另一个列表并返回 RPOPLPUSH source destination # 移除列表元素 # 如果 count > 0,则从头向尾遍历删除元素 # 如果 count < 0,则从后面向前面删除元素 # 如果 count = 0,则删除所有匹配的元素 LREM key count value # 对一个列表进行修剪(trim),让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除 LTRIM key start stop
-
查询 操作
# 通过索引获取列表中的元素 LINDEX key index # 获取列表长度 LLEN key # 获取列表指定范围内的元素 LRANGE key start stop
集合(Set)
-
集合类型:和数学中的集合概念相似,集合中的元素是唯一的、无序的,简单理解集合就是 没有顺序且不重复 的列表;一个集合类型可以存储至多 2^32 - 1个字符串;
-
添加 操作
# 向集合添加一个或多个成员 SADD key member1 [member2]
-
删除 操作
# 移除集合中一个或多个成员 SREM key member1 [member2] # 移除并返回集合中的一个随机元素 SPOP key # 将 member 元素从 source 集合移动到 destination 集合 SMOVE source destination member
-
查询 操作
# 返回集合中的所有成员 SMEMBERS key # 获取集合的成员数 SCARD key # 判断 member 元素是否是集合 key 的成员 SISMEMBER key member # 返回集合中一个或多个随机数 SRANDMEMBER key [count]
-
集合间聚合运算
# 返回第一个集合与其他集合之间的差异 SDIFF key1 [key2] # 返回给定所有集合的交集 SINTER key1 [key2] # 返回所有给定集合的并集 SUNION key1 [key2] # 返回给定所有集合的差集并存储在 destination 中 SDIFFSTORE destination key1 [key2] # 返回给定所有集合的交集并存储在 destination 中 SINTERSTORE destination key1 [key2] # 所有给定集合的并集存储在 destination 集合中 SUNIONSTORE destination key1 [key2]
有序集合(Sorted Set)
-
有序集合:是一种类似于集合和哈希之间的混合数据类型,与集合一样,排序集合由唯一的非重复字符串元素组成;有序集合中的元素不排序,但有序集合中的每个元素都关联了一个分数;虽然集合中每个元素都是不同的,但是它们的分数确可以相同;每个元素都会关联一个 double 类型的分数,Redis 正是通过分数来为集合中的成员进行从小到大的排序;
-
有序集合类型在某些方面和列表类型有些相似
- 相同点:
- 两者都是有序的;
- 两者都可以获得某一范围的元素;
- 不同点:
- 列表类型通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会较慢,所以它更适合实现如 “新鲜事” 或 “日志” 这样很少访问中间元素的应用;
- 有序集合类似是使用哈希表实现的,所以即使读取位于中间部分的数据速度也很快;
- 列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改元素的分数);
- 有序集合要比列表类型更耗费内存;
- 相同点:
-
添加
# 向有序集合添加一个或多个成员,或者更新已存在成员的分数 ZADD key score member [score member ...]
-
删除
# 移除有序集合中的一个或多个成员 ZREM key member [member ...] # 移除有序集合中给定的排名区间的所有成员 ZREMRANGEBYRANK key start stop # 移除有序集合中给定的分数区间的所有成员 ZREMRANGEBYSCORE key min max
-
查询
# 通过索引区间返回有序集合指定区间内的成员,分数从低到高排序 ZRANGE key start stop [WITHSCORES] # 通过索引区间返回有序集合指定区间内的成员,分数从高到低排序 ZREVRANGE key start stop [WITHSCORES] # 返回有序集中指定分数区间内的成员,分数从低到高排序 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] # 返回有序集中指定分数区间内的成员,分数从高到低排序 ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] # 返回有序集合中指定成员的排名,有序集成员按分数值(从小到大)排序 ZRANK key member # 返回有序集合中指定成员的排名,有序集成员按分数值(从大到小)排序 ZREVRANK key member # 获取有序集合的成员数 ZCARD key # 返回有序集中,成员的分数值 ZSCORE key member # 计算在有序集合中指定区间分数的成员数 ZCOUNT key min max
-
修改
# 向有序集合添加一个或多个成员,或者更新已存在成员的分数 ZADD key score member [score member ...] # 有序集合中对指定成员的分数加上增量 increment ZINCRBY key increment member
-
聚合运算
# 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 destination 中 ZINTERSTORE destination numkeys key [key ...] # 计算给定的一个或多个有序集的并集,并存储在新的 key 中 ZUNIONSTORE destination numkeys key [key ...]
通用命令
-
通用命令
# 返回所有 key KEYS * # 返回所有以 my 开头的 key KEYS my* # 获取 key 的类型 TYPE key # 查询某个 key 是否存在 EXISTS key [key ...] # 删除指定 key DEL key [key ...] # 从当前数据库中随机返回(不删除)一个 key RANDOMKEY # 对 key 进行重命名 RENAME key newkey # 清空当前数据库所有内容 FLUSHDB # 清空所有数据库内容 FLUSHALL # 将当前数据库的 key 移动到给定的数据库 db 当中 MOVE key db
Redis👉 mac 中安装 redis
上一篇