redis使用案例

1.计数器 string单线程,避免并发问题,保证不会出错,毫秒级性能命令:INCRBY incrby2.队列 list 简单消息队列、用户第几个访问、新闻列表排序由于redis把数据添加到队列是返回添加元素在队列的第几位,所以可以做判断用户是第几个访问这种业务新闻列表页面最新的新闻列表,redis的 LPUSH命令构建List3.在线状态、签到(大数据处理)几亿用户系统的签到,去重登录次数统计,用户是否在线状态setbit、getbit、bitcount命令原理是:redis内构建一个足够长的数组,每个数组元素只能是0和1两个值数组的下标index用来表示我们上面例子里面的用户id4.hash实现幂等性请求(hash实现幂等性请求)验证前端的重复请求,通过redis进行过滤:每次请求将request ip、参数、接口等hash作为key存储redis,设置多长时间有效期,然后下次请求过来的时候先在redis中检索有没有这个key,进而验证是不是一定时间内过来的重复提交5.秒杀系统(防止超卖),单线程特征,自增,无并发问题 string6.全局增量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) 2score相同,排序逻辑是按照key的字母序排序,同分数情况下按时间排序,key加上时间戳前缀通过ZRANK可以快速得到用户的排名通过ZRANGE可以快速得到TOP N的用户列表,它们的复杂度都是O(log(N)),

更多技术资讯请关注:gzitcast

猜你喜欢

转载自blog.51cto.com/14500648/2430759