数据类型
- 基础类型
- 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 | 求差集、交集、并集 |