????????
????????Redis 提供了丰富的数据类型,常见的有五种:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合)。
????????String 是最基本的 key-value 结构,key 是唯一标识,value 是具体的值,value其实不仅是字符串, 也可以是数字(整数或浮点数),value 最多可以容纳的数据长度是 512M。
普通字符串的基本操作:
# 设置 key-value 类型的值
> SET name hanbing
OK?
?
# 根据 key 获得对应的 value
> GET name
"hanbing"?
?# 判断某个 key 是否存在
> EXISTS name
(integer) 1
?
# 返回 key 所储存的字符串值的长度
> STRLEN name
(integer) 3
?
# 删除某个 key 对应的值
> DEL name
(integer) 1
?
?# 批量设置 key-value 类型的值
> MSET key1 value1 key2 value2?
OK
# 批量获取多个 key 对应的 value
> MGET key1 key2?
1) "value1"
2) "value2"
????????Hash 是一个键值对(key - value)集合,其中 value 的形式如: value=[{field1,value1},...{fieldN,valueN}]。Hash 特别适合用于存储对象。
# 存储一个哈希表key的键值
HSET key field value ??
# 获取哈希表key对应的field键值
HGET key field
# 在一个哈希表key中存储多个键值对
HMSET key field value [field value...]?
# 批量获取哈希表key中多个field键值
HMGET key field [field ...] ? ? ??
# 删除哈希表key中的field键值
HDEL key field [field ...] ?
????????List 列表是简单的字符串列表,按照插入顺序排序,可以从头部或尾部向 List 列表添加元素。
????????列表的最大长度为 2^32 - 1,也即每个列表支持超过 40 亿个元素。
????????List 类型的底层数据结构是由双向链表或压缩列表实现的:
# 将一个或多个值value插入到key列表的表头(最左边),最后的值在最前面
LPUSH key value [value ...]?
# 返回列表key中指定区间内的元素,区间以偏移量start和stop指定,从0开始,如果到-1结束,则为返回全部元素
LRANGE key start stop
# 将一个或多个值value插入到key列表的表尾(最右边)
RPUSH key value [value ...]
# 移除并返回key列表的头元素
LPOP key ? ??
????????Set 类型是一个无序并唯一的键值集合,它的存储顺序不会按照插入的先后顺序进行存储。
????????一个集合最多可以存储 2^32-1 个元素。概念和数学中个的集合基本类似,可以交集,并集,差集等等,所以 Set 类型除了支持集合内的增删改查,同时还支持多个集合取交集、并集、差集。
# 往集合key中存入元素,元素存在则忽略,若key不存在则新建
SADD key member [member ...]
# 获取集合key中所有元素
SMEMBERS key
# 从集合key中删除元素
SREM key member [member ...]?
Set 类型和 List 类型的区别如下:
Zset 类型(有序集合类型)相比于 Set 类型多了一个排序属性 score(分值),对于有序集合 ZSet 来说,每个存储元素相当于有两个值组成的,一个是有序结合的元素值,一个是排序值。
有序集合保留了集合不能有重复成员的特性(分值可以重复),但不同的是,有序集合中的元素可以排序。
# 往有序集合key中加入带分值元素
ZADD key score member [[score member]...] ??
# 正序获取有序集合key从start下标到stop下标的元素
ZRANGE key start stop [WITHSCORES]
# 往有序集合key中删除元素
ZREM key member [member...] ?
?