Redis数据类型


Redis支持5种类型的数据类型。

字符串(Strings)


Redis字符串是字节序列。 Redis中的字符串是二进制安全的,这意味着它们的已知长度不受任何特殊终止字符的确定。因此,你可以在一个字符串中存储最多512 MB的任何内容。

redis 127.0.0.1:6379> SET name "newbiego" 
OK 
redis 127.0.0.1:6379> GET name 
"newbiego"

在上面的示例中,SETGET是Redis命令,name是Redis中使用的密钥,并且newbiego是存储在Redis中的字符串值。

注意:字符串值的最大长度为512兆字节。

哈希(Hashes)


Redis哈希是键值对的集合。 Redis哈希是字符串字段和字符串值之间的映射。因此,它们用于表示对象。

redis 127.0.0.1:6379> HMSET user:1 username newbiego password 
newbiego points 200 
OK 
redis 127.0.0.1:6379> HGETALL user:1  
1) "username" 
2) "newbiego" 
3) "password" 
4) "newbiego" 
5) "points" 
6) "200"

在上面的示例中,哈希数据类型用于存储包含用户基本信息的用户对象。这里HMSET,HGETALL是Redis的命令,而user: 1是键。

每个哈希最多可存储2个32-1个字段值对(超过40亿个)。

列表(Lists)


Redis列表只是字符串列表,按插入顺序排序。你可以将元素添加到头部或尾部的Redis列表中。

redis 127.0.0.1:6379> lpush newbiegolist redis 
(integer) 1 
redis 127.0.0.1:6379> lpush newbiegolist mongodb 
(integer) 2 
redis 127.0.0.1:6379> lpush newbiegolist rabitmq 
(integer) 3 
redis 127.0.0.1:6379> lrange newbiegolist 0 10  

1) "rabitmq" 
2) "mongodb" 
3) "redis"

列表的最大长度为232-1个元素(4294967295,每个列表超过40亿个元素)。

集合(Sets)


Redis集合是无序的字符串集合。在Redis中,你可以添加,删除和测试O(1)时间复杂度中成员的存在。

redis 127.0.0.1:6379> sadd newbiegolist redis 
(integer) 1 
redis 127.0.0.1:6379> sadd newbiegolist mongodb 
(integer) 1 
redis 127.0.0.1:6379> sadd newbiegolist rabitmq 
(integer) 1 
redis 127.0.0.1:6379> sadd newbiegolist rabitmq 
(integer) 0 
redis 127.0.0.1:6379> smembers newbiegolist  

1) "rabitmq" 
2) "mongodb" 
3) "redis"

注意

在上面的示例中,rabitmq会被添加两次,但是由于集合的唯一属性,它只会被添加一次。

一组成员的最大数量为232-1个(4294967295,每组成员超过40亿)。

有序集合(Sorted Sets)


Redis排序集类似于Redis集,即字符串的非重复集合。区别在于,排序集的每个成员都与一个分数相关联,该分数用于从最小分数到最大分数获取有序排序的集合。虽然成员是唯一的,但分数可以重复。

redis 127.0.0.1:6379> zadd newbiegolist 0 redis 
(integer) 1 
redis 127.0.0.1:6379> zadd newbiegolist 0 mongodb 
(integer) 1 
redis 127.0.0.1:6379> zadd newbiegolist 0 rabitmq 
(integer) 1 
redis 127.0.0.1:6379> zadd newbiegolist 0 rabitmq 
(integer) 0 
redis 127.0.0.1:6379> ZRANGEBYSCORE newbiegolist 0 1000  

1) "redis" 
2) "mongodb" 
3) "rabitmq"