Redis对比与Memcached最大的优势就是支持更多灵活的数据结构,丰富的数据操作
Redis现支持的数据类型有:字符串,列表,集合,哈希,有序集合
Redis中文网链接:http://www.redis.cn/topics/data-types.html
1.字符串:普通数据类型
2.列表:简单的字符串列表,按照插入顺序排序。 你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
适用于:对数据头尾操作频繁是数据
- 在社交网络中建立一个时间线模型,使用LPUSH去添加新的元素到用户时间线中,使用LRANGE去检索一些最近插入的条目。
- 你可以同时使用LPUSH和LTRIM去创建一个永远不会超过指定元素数目的列表并同时记住最后的N个元素。
- 列表可以用来当作消息传递的基元(primitive),例如,众所周知的用来创建后台任务的Resque Ruby库。
- 你可以使用列表做更多事,这个数据类型支持许多命令,包括像BLPOP这样的阻塞命令。请查看所有可用的列表操作命令获取更多的信息
- 用双队列的模式,实现不同优先级的消息队列,阻塞等待响应即可{ redis.blpop([height_list,low_list],0) //默认从第一个队列弹出以一个元素,不存在则弹出第二个队列的第一个元素,不存在则阻塞等待,0为永久等待,阻塞为阻塞该次连接,不影响其他连接对redis的操作 }
- 参考链接:http://www.2cto.com/kf/201408/325868.html http://www.myext.cn/other/a_28421.html
3.集合:无序的字符串合集,有着不允许相同成员存在的优秀特性
适用于:不要求排序,数据值唯一
- 用集合跟踪一个独特的事。想要知道所有访问某个博客文章的独立IP?只要每次都用SADD来处理一个页面访问。那么你可以肯定重复的IP是不会插入的。
4.有序集合:是具备键值存在评分的集合,带评分,不重复
适用于:要求排序,数据值唯一
- 在一个巨型在线游戏中建立一个排行榜,每当有新的记录产生时,使用ZADD 来更新它。你可以用ZRANGE轻松地获取排名靠前的用户, 你也可以提供一个用户名,然后用ZRANK获取他在排行榜中的名次。 同时使用ZRANK和ZRANGE你可以获得与指定用户有相同分数的用户名单。 所有这些操作都非常迅速。
5.哈希:是字符串字段和字符串值之间的映射
适用于:一个记录包含多个键值对,比如一个用户的一组信息(名字,性别,手机号,状态)
补充:
列表阻塞模式,阻塞该次链接,直到成功弹出元素,否则一直根据timeout时间等待(0一直等待),大量阻塞等待,将占用大量内存