Redis瞬时高并发秒杀方案总结瞬时高并发秒杀方案总结
1.Redis
丰富的数据结构(Data Structures)
字符串(String)
Redis字符串能包含任意类型的数据;;
一个字符串类型的值最多能存储512M字节的内容;
利用INCR命令簇(INCR, DECR, INCRBY)来把字符串当作原子计数器使用;
使用APPEND命令在字符串后添加内容。
列表(List)
Redis列表是简单的字符串列表,按照插入顺序排序;
你可以添加一个元素到列表的头部(左边:LPUSH)或者尾部(右边:RPUSH);
一个列表最多可以包含232-1个元素(4294967295,每个表超过40亿个元素);
在社交网络中建立一个时间线模型,使用LPUSH去添加新的元素到用户时间线中,使用LRANGE去检索一些最近插入的条
目;
你可以同时使用LPUSH和LTRIM去创建一个永远不会超过指定元素数目的列表并同时记住最后的N个元素;
列表可以用来当作消息传递的基元(primitive),例如,众所周知的用来创建后台任务的Resque Ruby库。
集合(Set)
Redis集合是一个无序的,不允许相同成员存在的字符串合集(Uniq操作,获取某段时间所有数据排重值);
支持一些服务端的命令从现有的集合出发去进行集合运算,如合并(并集:union),求交(交集:intersection),差集, 找出
不同元素的操作(共同好友、二度好友);
用集合跟踪一个独特的事。想要知道所有访问某个博客文章的独立IP?只要每次都用SADD来处理一个页面访问。那么你可
以肯定重复的IP是不会插入的( 利用唯一性,可以统计访问网站的所有独立IP);
Redis集合能很好的表示关系。你可以创建一个tagging系统,然后用集合来代表单个tag。接下来你可以用SADD命令把所有
拥有tag的对象的所有ID添加进集合,这样来表示这个特定的tag。如果你想要同时有3个不同tag的所有对象的所有ID,那么你
需要使用SINTER。
使用SPOP或者SRANDMEMBER命令随机地获取元素。
哈希(Hashes)
Redis Hashes是字符串字段和字符串值之间的映射;
尽管Hashes主要用来表示对象,但它们也能够存储许多元素。
有序集合(Sorted Sets)
Redis有序集合和Redis集合类似,是不包含相同字符串的合集;
每个有序集合的成员都关联着一个评分,这个评分用于把有序集合中的成员按最低分到最高分排列(排行榜应用,取TOP
N操作);
使用有序集合,你可以非常快地(O(log(N)))完成添加,删除和更新元素的操作;
元素是在插入时就排好序的,所以很快地通过评分(score)或者位次(position)获得一个范围的元素(需要精准设定过期时间
的应用);
轻易地访问任何你需要的东西: 有序的元素,快速的存在性测试,快速访问集合中间元素;
在一个巨型在线游戏中建立一个排行榜,每当有新的记录产生时,使用ZADD 来更新它。你可以用ZRANGE轻松地获取排
名靠前的用户, 你也可以提供一个用户名,然后用ZRANK获取他在排行榜中的名次。 同时使用ZRANK和ZRANGE你可以获
得与指定用户有相同分数的用户名单。 所有这些操作都非常迅速;
有序集合通常用来索引存储在Redis中的数据。 例如:如果你有很多的hash来表示用户,那么你可以使用一个有序集合,
评论0