redis基本语法和应用场景

redis支持5种数据类型,包括String(字符串)、Hash(词典)、List(列表)、Set(集合)、Sort Set(有序集合),简单介绍一下每种数据结构的用法和应用场景。

一、String(字符串)
redis的字符串是字节序列,在redis中是二进制安全的,String是最常用的一种数据类型,普通的key/value存储都可以归为此类。常用的命令有:get、set、incr、decr、mget等;
应用场景:
1.想知道什么时候封锁一个IP地址(访问超过几次)。INCRBY命令让这些变得很容易,通过原子递增保持计数。
2.通过INCR生成订单id(redis是单线程安全的);

二、Hash(字典)
redis hash是哈希键值对的集合。 redis的哈希值是字符串字段和字符串值之间的映射,常被用来存储对象,常用命令有:hget,hset,hgetall;
应用场景:比如要存储用户信息,用户id作为key,用户的信息name、age、mobile作为hash键值对存储;

三、List(列表)
redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构。常用命令:lpush,rpush,lpop,rpop,lrange等;
应用场景:
1.利用Lists的PUSH操作,将任务存在Lists中,然后工作线程再用POP操作将任务取出进行执行,可以实现消息队列的操作;
2.我们项目的关注列表、粉丝列表等都是用Redis的list结构来实现的;

四、Set(集合)
Set集合是redis字符串的无序集合,存储的是没有重复的列表数据,Set内部是通过HashMap实现的。常用命令:sadd,srem,spop,sdiff ,smembers,sunion 等;
应用场景:比如在微博应用中,每个人的好友存在一个集合(set)中,这样求两个人的共同好友的操作,可能就只需要用求交集命令即可。

五、Sort Set(有序集合)
redis有序集合类似于redis集合,不同的是Sort Set集合是有序的。一个有序集合的每个成员带有分数,用于进行排序。常用命令:zadd,zrange,zrem,zcard等;
应用场景:redis sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。当你需要一个有序的并且不重复的集合列表,那么可以选择sorted set数据结构,比如twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的。
又比如用户的积分排行榜需求就可以通过有序集合实现。还有上面介绍的使用List实现轻量级的消息队列,其实也可以通过Sorted Set实现有优先级或按权重的队列。

参考:http://blog.csdn.net/gaogaoshan/article/details/41039581/

你可能感兴趣的:(Redis,redis,数据结构)