上面的文章,我们已经成功在本地搭建了redis以及集群,接下来让我们学习一下他的数据类型以及对数据的操作命令。
如果你没有本地搭建,我推荐一个网站,是redis官方的测试平台。http://try.redis.io/
我接下来为了方便,也会使用这个平台。
redis的数据类型分为这么几种:String,hash,list,set以及zset(有序集合)
String
String是redis最基本的数据模型。我们可以存储序列化的对象放入其中。String最大能存储512M的数据
数据读取命令:
适合场景:
单纯key/value格式数据
Hash
hash存储一个key-value的键值对集合,也正因为这种特性,他非常适合存储对象。
对比String的命令,他们之间只只在set和get前面填了个HM;
每个 hash 可以存储 232 -1 键值对(40多亿)。
适合场景:
对象信息,类似于用户信息,里面包括姓名,性别等
List
列表就无需说太多了,redis的数据存放都是有序的,我们可以随意的向列表的左右两侧存放数据,
这是列表的存放(lpush:左侧;rpush:右侧):
我们可以查询指定起止区间的数据,从左侧开始(lrange):
取指定下标的数据:lindex key index
关于列表操作的命令还有很多,这里暂且不讲,我会写在另一篇文章里面。
适合场景:
消息队列。利用Lists的push的操作,将任务存储在list中,然后工作线程再用pop操作将任务取出进行执行。
SET
Redis 的 Set 是 string 类型的无序集合,唯一。
sadd 添加元素
smembers 查看所有元素
通过查询,能看出来,确实时是无序的。
使用场景:
set类似list,特殊之处是set可以自动排重。
set还提供了某个成员是否在一个set内的接口,这个也是list没有的。
zset
set的有序版,不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zadd key score value(添加元素)
ZRANGEBYSCORE key min max (返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员)
适用场景:
sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。
zset做带权重的队列,比如普通消息的score为1,重要消息的score为2,然后工作线程可以选择按score的倒序来获取工作任务。让重要的任务优先执行。