Redis 中的数据类型
Redis 中,常用的数据类型有以下几种:
- String 字符串
- Hash 散列/哈希
- List 列表
- Set 集合
- Sorted Set 有序集合
所有数据都是 key-value 形式存储,每个数据都有唯一的 key,以上数据类型是 value。
删除一个数据的命令:DEL {key}
。
字符串(string)
字符串没啥好说的,就是 value 为 string。
Redis 命令,要设置或使用字符串类型的数据,则使用SET
或 GET
开头的命令:
# 设置字符串
SET a AAA
SET b 666
# 其中 a 是 key,AAA 是 value,不需要 "" 包围字符串
# ------
# 获取字符串
GET a
# ------
# 获取多个字符串
MGET a b
# 使用空格分隔 key
因为 redis 没有值类型,因此使用不加 ""
也会被识别为字符串。建议加上双引号比较好,提高可读性。
哈希(Hash)
一个 string 类型,是 key-value 结构,而哈希则是 {key-value} 的集合,key 是 string 类型,value 可以是其它类型。
因此,可以称 Hash 为键值对的集合,就是相当于 C# 中的字典类型,主要存储有结构的数据。
Redis 中每个 hash 可以存储 232 - 1 个键值对(40多亿)。
Hash 使用 HMSET
、 HMGET
、HGETALL
等命令来操作哈希表。
有一个这个的数据:
id:1,
name:"Cxiaoao"
使用哈希存储:
# HMSET {key} {filed1} {value1} {filed2} {value2} ... ...
HMSET user id "1" name "Cxiaoao"
查询此哈希表的所有键值对:
HGETALL user
查看哈希表的一个字段:
HGET user id
删除其中一个字段:
HDEL user {字段名称}
列表(Lists)
列表中可以添加多中类型的元素,简单的就是字符串,列表即是数据结构中的链表,使用双向列表技术实现,越靠近两侧的元素速度越快。
子元素的添加要从头部或尾部加入,由于列表是栈,因此列表是有序的。因为列表是有序的,因此可以存储重复的数据。
适合做例如消息记录(队列),粉丝关注记录、订单记录等。
列表只能添加字符串。
往一个列表加入数据:
LPUSH {key} {一个元素值}
例如:
LPUSH list a
LPUSH list b
LPUSH list c
列表的命令比较多,自己查询文档就好,这里不再赘述。
集合(Set)
列表(List)是有序的,集合(Set)是无序的。集合不能出现重复的数据。
应用场景如网站的访问IP(去重)记录、花店中花的种类等。
集合是字符串元素的集合,只能存储字符串。
使用 SADD
命令往集合中添加一个元素:
SADD set a
SADD set b
SADD set c
SADD set a b c
有序集合(sorted set)
有序集合跟集合一样,只是有有序集合会根据元素的值从小到大排序。
有序集合也只能添加字符串。
ZADD ss 2 a
ZADD ss 1 b
ZADD ss 4 z
查询:
ZRANGE ss 0 10 WITHSCORES