redis使用案例

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值