转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/129.html?1455808528 排行榜功能是一个很普遍的需求.使用 Redis 中有序集合的特性来实现排行榜是又好又快的选择. 一般排行榜都是有实效性的,比如“用户积分榜”.如果没有实效性一直按照总榜来排,可能榜首总是几个老用户,对于新用户来说,那真是太令人沮丧了. 首先,来个“今日积分榜”吧,排序规则是今日用户新增积分从多到少. 那么用户增加积分时,都操作一下记录…
排行榜功能是一个很普遍的需求.使用 Redis 中有序集合的特性来实现排行榜是又好又快的选择. 一般排行榜都是有实效性的,比如“用户积分榜”.如果没有实效性一直按照总榜来排,可能榜首总是几个老用户,对于新用户来说,那真是太令人沮丧了. 首先,来个“今日积分榜”吧,排序规则是今日用户新增积分从多到少. 那么用户增加积分时,都操作一下记录当天积分增加的有序集合.假设今天是 2015 年 04 月 01 日,UID 为 1 的用户因为某个操作,增加了 5 个积分.Redis 命令如下: ZINCRBY…
一.排行榜功能简介 排行榜功能是一个很普遍的需求.使用 Redis 中有序集合(SortedSet)的特性来实现排行榜是又好又快的选择. 一般排行榜都是有实效性的,比如交通数据流中的路口/路段的车流量排行榜,用户积分榜,游戏中活跃度排行榜,游戏装备排行榜等. 面临问题:数据库设计复杂,并发数较高,数据要求实时性 二.数据库设计 用户积分表--用户记录每个用户对应的积分情况 积分流水表--用于记录用户积分消费和获取…
一.排行榜功能简介 排行榜功能是一个很普遍的需求.使用 Redis 中有序集合(SortedSet)的特性来实现排行榜是又好又快的选择. 一般排行榜都是有实效性的,比如交通数据流中的路口/路段的车流量排行榜,用户积分榜,游戏中活跃度排行榜,游戏装备排行榜等. 面临问题:数据库设计复杂,并发数较高,数据要求实时性 二.数据库设计 用户积分表--用户记录每个用户对应的积分情况 积分流水表--用于记录用户积分消费和获取…
排行榜功能是一个很普遍的需求.使用 Redis 中有序集合的特性来实现排行榜是又好又快的选择.Redis有序集合非常适用于有序不重复数据的存储 一般排行榜都是有实效性的,比如“用户积分榜”.如果没有实效性一直按照总榜来排,可能榜首总是几个老用户,对于新用户来说,那真是太令人沮丧了. 首先,来个“今日积分榜”吧,排序规则是今日用户新增积分从多到少. 那么用户增加积分时,都操作一下记录当天积分增加的有序集合.假设今天是 2015 年 04 月 01 日,UID 为 1 的用户因为某个操作,增加了 5…
package site.zy9.redisApp.test; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationCont…
1 Redis-cluster架构图             redis-cluster投票:容错  (至少要三个才可以,才能超过半数) 架构细节: (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. (2)节点的fail是通过集群中超过半数的节点检测失效时才生效. (3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可. (4)redis-cluster把所有的物理节点映射到[0-…
从何说起 前些天和朋友讨论一个问题,他们的应用有几十万会员然后对应有积分,现在想做积分排名的需求,问有没有什么好方案.这个问题也算常见,很多地方都能看到,常规做法一般是数据定时跑批把计算结果到中间表然后直接查表就行,或者只显示个TOP N的排行榜,名次高的计算真实名次,名次比较低的直接显示在xxx名开外这种.但是出于探索问题的角度,我还是想找一下有没有实时计算的办法,并且效率能够接受. 在博客园搜到一篇不错的文章,基本罗列了常用的方案,每种算法详细介绍了具体思路,其中基于二叉树的算法是个非常不错…
前言 上篇的预告好像是“聊天室的小细节,你都注意到了吗?”.今天也是为那篇做铺垫吧.之前的版本有好多问题,比如:当前登录用户是否合法问题,userid参数如果随便传后台没有验证.还有一个致命的问题,用户AB都在线,但是如果A没有打开B的窗口或者B没有打开A的窗口,那么发消息,对方是收不到的.因为他们没有进入到同一个组里面.本篇讲述了一些Redis的东西.由于项目本身就是为了学习和练习一些东西.所以,Redis并不是我的强项,只不过随便研究研究,具体专业的用法我也不太会.还在学习中... 实现思路…
前言 上一篇中简单讲解了用Redis缓存在线用户逻辑.篇幅也比较小,本篇将详细实现用户的上线下线通知.图片效果转换功能.而且,代码和开发思路都会详细介绍. 效果展示 目前有三个用户,user1,user2,user3.下图会简单展示用户上线,下线的消息推送效果. 图一:用户1登录,此时好友均不在线.(头像为灰色,谷歌浏览器) 图二:用户1登录(打开360浏览器模拟用户1登录),此时谷歌浏览器用户收到该用户上线通知,图标亮起 图三:用户2登录(打开搜狗浏览器模拟用户2登录),此时谷歌浏览器用户收到…