redis学习之数据类型

上面的文章,我们已经成功在本地搭建了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的倒序来获取工作任务。让重要的任务优先执行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章