浅谈redis应用场景

来源:互联网 发布:网络114黄页 编辑:程序博客网 时间:2024/06/06 03:30

除了作为缓存使用,redis还有很多作用。

实际使用情况更为复杂,需要考虑更多因素,这里只是初步了解redis的应用场景


1.秒杀商品数量计数
设置预售商品的数量,每抢一次数量减一
decr key_name
redis是单线程的,避免了异步数据不一致问题

2.抢购计时
设置一个活动key比如:
set panic_buying double11 
设置过期时间expire panic_buying 距离活动开始时间
从后台用ttl panic_buying 获取距离活动开始的时间供前端js做倒计时效果

3.积分排名前100名
使用sorted set,用户的积分作为key的score(权重),这样使用
zrevrangebyscore key_name 99 0 withscores
取出积分前100名的用户信息

4.自增生成id
假如初始商品id为10000,set product_id 10000
每添加一个商品 incr product_id
用redis来生成id是为了防止数据库分片时自增不一致的问题,而UUID冗长,且可读性差

5.类似微博的新鲜事
sorted set 用时间戳作为权重值,事件内容作为value
zrevrangebyscore key_name 9 0 withscores,取出最近时间的10件新鲜事

6.最近访问记录
lpush user:userid:rec_visited visitor_info
获取最近访问的前10个好友
lrange user:userid:rec_visited 0 9
由于无法设置list里单个元素的过期时间,所以需要定期删除list里的元素

7.消息队列

8.单点登录系统模拟session
用户登录时用UUID生成随机token存放在cookie中,而redis中key为token,
value为对应用户的信息(密码等敏感信息除外),并设置过期时间。
需要用户登录时,从cookie先找到token,再到redis中取用户信息,若这两步都成功,那么说明用户已经登录

9.存储验证码和短信验证码

生成随机的验证码或短信验证码存入redis并设置过期时间,比如为3分钟,
若用户没在3分钟内输入正确验证码,则验证码过期无效,取验证码时为null,重新发送验证码
0 0