Skip to content
On this page

数据类型

  • 基础类型
    • String
    • Hash
    • List
    • Set
    • SortedSet
  • 特殊类型
    • GEO
    • BitMap
    • Hyperlog

String

String 类型,也是字符串类型,是 Redis 中最简单的存储类型。 根据 value 的格式不同,又分为 3 类:

  • string : 普通字符串
  • int : 整数类型,可以做自增、自减操作
  • float : 浮点类型,可以做自增、自减操作

不管是那种格式,底层都是字节数组形式存储,只不过编码方式不同。字符串类型的最大空间不能超过 512m

常见命令:

命令作用
SET添加或修改一个已经存在的 String 类型的键值对
GET根据 key 获取 String 类型的 value
MSET批量添加多个 String 类型的键值对
MGET根据 key 获取多个 String 类型的 value
INCR让一个整型的 key 自增 1
INCRBY让一个整型的 key 自增并指定步长
INCRBYFLOAT让一个浮点类型的数字自增并指定步长
SETNX添加一个 String 类型的键值对,前提是这个 key 不存在 ,否则不执行
SETEX添加一个 String 类型的键值对,并且指定有效期

Hash

Hash 类型,也叫散列,其 value 是一个无序字典。

常见命令:

命令作用
HSET key field value添加或者修改 hash 类型 key 的 field 的值
HGET key field获取一个 hash 类型 key 的 field 的值
HMSET批量添加多个 hash 类型 key 的 field 的值
HMGET批量获取多个 hash 类型 key 的 field 的值
HGETALL获取一个 hash 类型的 key 中所有的 field 和 value
HKEYS获取一个 hash 类型的 key 中的所有 field
HVALS获取一个 hash 类型的 key 中所有的 value
HINCRBY让一个 hash 类型 key 的字段自增并指定步长
HSETNX添加一个 hash 类型的 key 的 field 值,前提是这个 field 不不存在,否则不执行

List

Redis 中的 List 类型与 Java 中的 LinkedList 类似,可以看作是一个双向链表的结构。既可以支持正向检索,也可以支持反向检索。
特征:

  • 有序
  • 元素可以重复
  • 插入和删除快
  • 查询速度一般

常用来存储一个有序数据,例如朋友圈点赞列表,评论列表等。

常见命令:

命令作用
LPUSH key element ...向列表左侧插入一个或多个元素
LPOP key移除并返回列表左侧的第一个元素,没有则返回 nil
RPUSH key element ...向列表右侧插入一个或多个元素
RPOP key移除并返回列表右侧的第一个元素
LRANGE key star end返回一段角标范围内的所有元素

Set

Redis 的 Set 结构与 Java 中的 HashSet 类似,可以看作是一个 value 为 null 的 HashMap。因为也是一个 hash 表,因此具备与 HashSet 类似的特征:

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集、并集、差集等功能

常见命令:

命令作用
SADD key member ...向 set 中添加一个或多个元素
SREM key menbar ...移除 set 中的指定元素
SCARD key返回 set 中元素的个数
SISMEMBER key member判断一个元素是否存在于 set 中
SMEMBERS获取 set 中的所有元素

SortedSet

Redis 的 SortedSet 是一个可排序的 set 集合,与 Java 中的 TreeSet 有些类似,但底层数据结构却差别很大。SortedSet 中的每一个元素都带有一个 score 属性,可以基于 score 属性对元素排序,底层的实现是一个跳表(SkipList)加 hash 表。
SortedSet 具备下列特性:

  • 可排序
  • 元素不重复
  • 查询速度快

因为 SortedSet 的可排序性,经常被用来实现排行榜功能。

常见命令:

命令作用
ZADD key score member添加一个或多个元素到 sorted set ,如果已经存在则更新其 score 值
ZREM key member删除 sorted set 中的一个指定元素
ZSCORE key member获取 sorted set 中的指定元素 score 值
ZRANK key member获取 sorted set 中的指定元素的排名
ZCARD key获取 sorted set 中的元素个数
ZCOUNT key min max统计 score 值在给定范围内的所有元素的个数
ZINCRBY key increment member让 sorted set 中的指定元素自增,步长为指定的 increment 值
ZRANGE key min max按照 score 排序后,获取指定排名范围内的元素
ZRANGEBYSCORE key min max按照 score 排序后,获取指定 score 范围内的元素
ZDIFF、ZINTER、ZUNION求差集、交集、并集