vString(字符串)
String是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
String类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
String类型是Redis最基本的数据类型,一个键最大能存储512MB。
Demo
在以上Demo中我们使用了 Redis 的 SET 和 GET 命令。
vHash(哈希)
Redis hash 是一个键值对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
Demo
以上Demo中 hash 数据类型存储了包含用户脚本信息的用户对象。 Demo中我们使用了 Redis HMSET, HEGTALL 命令,cityhash 为键值。
每个 hash 可以存储 232 - 1键值对(40多亿)。
127.0.0.1:6379> hmset city:name bj sh sz gd hz tj OK 127.0.0.1:6379> hgetall city:name 1) "bj" 2) "sh" 3) "sz" 4) "gd" 5) "hz" 6) "tj"
vList(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。
Demo 展示list时,数据成倒叙,先进后出
127.0.0.1:6379> lpush list list1 list2 list3 3 127.0.0.1:6379> lrange list 0 2 list3 list2 list1
列表最多可存储 232 - 1元素 (4294967295, 每个列表可存储40多亿)。
vSet(集合)
Redis的Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
sadd 命令:添加一个string元素到,key对应的set集合中,成功返回1,如果元素以及在集合中返回0,key对应的set不存在返回错误。
sadd key member
127.0.0.1:6379> sadd sett set1 set2 2 127.0.0.1:6379> smembers sett set1 set2
以上Demo中 "BEIJING" 添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。返回0
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
vZset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
zadd 命令:添加元素到集合,元素在集合中存在则更新对应score
在创建时指定数据的下标
127.0.0.1:6379> zadd zset 0 zset1 1 zset2 2 zset3 3 127.0.0.1:6379> zrangebyscore zset 0 3 zset1 zset2 zset3
Stream是什么
在一般的编程概念里,流是一种主要用于优化内存的数据类型,它不需要一次性把大量数据,比如说大文件一次性读取到内存再处理,可以边读取边处理,这样可以用少量内存就可以处理大文件。
因此简单地说,流是Redis一种新的数据结构,不需要读取原有key的值,就可以在此key中添加新内容的数据类型。
Stream添加
Stream可以用更抽象的方式来记录数据,比如说日志。
Stream类型存储的不是一个字符串,而是多个键值对,比如:
XADD mystream * -id temperature >
代表往mystream添加新的数据 { "sensor-id": 1234, "temperature": 19.8 }, *代表服务器端生成一个新的EntryID
1518951480106-0 是代表这组数据的EntryID值,可以理解为日志中的行号。1518951480106是当前时间的毫秒值,0代表这一时侯的第几个数据。可以用XLEN查看总数据个数。
> XLEN mystream
(integer) 1
也可以自己指定EntryID的值,如:
> XADD somestream 0-1 field value
0-1
> XADD somestream 0-2 foo bar
0-2
流是只增不减的,所以如果entryid值比之前的小,则会报错:
> XADD somestream 0-1 foo bar
(error) ERR The ID specified in XADD is equal or smaller than the target stream top item
Stream查询
可以用 XRANGE/XREVRANGE 来查找,- + 代表查找所有的。
> XRANGE mystream - +
可以指定EntryID的值范围,可以理解为取某个时间段的日志内容
> XRANGE mystream 1518951480106 1518951480107
1) 1) 1518951480106-0
2) 1) "sensor-id"
2) "1234"
3) "temperature"
4) "19.8"
可以只取前两个
> XRANGE mystream - + COUNT 2
1) 1) 1519073278252-0
2) 1) "foo"
2) "value_1"
2) 1) 1519073279157-0
2) 1) "foo"
2) "value_2"