您的位置:首页 > 数据库 > Redis

浅谈redis应用场景

2017-01-14 17:39 169 查看
除了作为缓存使用,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,重新发送验证码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: