Redis支持五种数据类型:
string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。string类型是Redis最基本的数据类型,一个键最大能存储512MB。
127.0.0.1:6379> set name yuxin
OK
127.0.0.1:6379> get name
"yuxin"
hash 是一个键值(key=>value)对集合,是一个string类型的field和value的映射表,hash特别适合用于存储对象。
127.0.0.1:6379> HGET me name
"yuxin"
127.0.0.1:6379> HGET me sex
"boy"
list是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。列表最多可存储4294967295个元素 (4294967295, 每个列表可存储40多亿)。
127.0.0.1:6379> lpush students xiaoming
(integer) 1
127.0.0.1:6379> lpush students xiaohong
(integer) 2
127.0.0.1:6379> lpush students xiaolan
(integer) 3
127.0.0.1:6379> lpush students yuxin
(integer) 4
127.0.0.1:6379> lrange students 0 10
1) "yuxin"
2) "xiaolan"
3) "xiaohong"
4) "xiaoming"
Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
集合中最大的成员数为4294967295, 每个集合可存储40多亿个成员。
sadd 命令
添加一个string元素到,key对应的set集合中,成功返回1,如果元素已经在集合中返回0,key对应的set不存在返回错误。
127.0.0.1:6379> sadd students-1 xiaoming
(integer) 1
127.0.0.1:6379> sadd students-1 xiaohong
(integer) 1
127.0.0.1:6379> sadd students-1 xiaolan
(integer) 1
127.0.0.1:6379> sadd students-1 yuxin
(integer) 1
127.0.0.1:6379> SMEMBERS students-1
1) "xiaohong"
2) "yuxin"
3) "xiaoming"
4) "xiaolan"
zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
127.0.0.1:6379> ZADD names 3 xiaohong
(integer) 1
127.0.0.1:6379> ZADD names 1 xiaohong1
(integer) 1
127.0.0.1:6379> ZADD names 6 xiaohong6
(integer) 1
127.0.0.1:6379> ZADD names 5 xiaohong5
(integer) 1
127.0.0.1:6379> ZRANGEBYSCORE names 0 1000
1) "xiaohong1"
2) "xiaohong"
3) "xiaohong5"
4) "xiaohong6"