A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁柳 中级黑马   /  2019-8-1 17:47  /  1092 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.计数器 string
单线程,避免并发问题,保证不会出错,毫秒级性能
命令:INCRBY incrby

2.队列 list 简单消息队列、用户第几个访问、新闻列表排序
由于redis把数据添加到队列是返回添加元素在队列的第几位,所以可以做判断用户是第几个访问这种业务
新闻列表页面最新的新闻列表,redis的 LPUSH命令构建List

3.在线状态、签到(大数据处理)
几亿用户系统的签到,去重登录次数统计,用户是否在线状态
setbit、getbit、bitcount命令

原理是:
redis内构建一个足够长的数组,每个数组元素只能是0和1两个值
数组的下标index用来表示我们上面例子里面的用户id

4.hash实现幂等性请求
(hash实现幂等性请求)验证前端的重复请求,通过redis进行过滤:每次请求将request ip、参数、接口等hash作为key存储redis,设置多长时间有效期,然后下次请求过来的时候先在redis中检索有没有这个key,进而验证是不是一定时间内过来的重复提交

5.秒杀系统(防止超卖),单线程特征,自增,无并发问题 string

6.全局增量ID生成 生成全局唯一商品序列号、插入数据重复问题

7.排行榜 zrevrank 查看前n名 ZRANGE 查看所有排名 O(log(N))

谁得分高谁排名往上。命令:ZADD(有序集)

给Alice投票 redis> zincrby vote_activity 1 Alice "1"

给Bob投票 redis> zincrby vote_activity 1 Bob "1"

给Alice投票 redis> zincrby vote_activity 1 Alice "2"

查看Alice投票数 redis> zscore vote_activity Alice ----"2"

获取Alice排名(从高到低,zero-based ) redis> zrevrank vote_activity Alice (integer) 0

获取前10名(从高到低) redis> zrevrange vote_activity 0 9 1) "Alice" 2) "Bob"

获取前10名及对应的分数(从高到低) redis> zrevrange vote_activity 0 9 withscores "Alice" "2" "Bob" "1"

获取总参与选手数 redis> zcard vote_activity (integer) 2

score相同,排序逻辑是按照key的字母序排序,同分数情况下按时间排序,key加上时间戳前缀

通过ZRANK可以快速得到用户的排名

通过ZRANGE可以快速得到TOP N的用户列表,它们的复杂度都是O(log(N)),

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马