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

redis使用场景

2017-12-08 15:38 453 查看
1、  String:

记录文章浏览数(也可以文章评论数):

(1)      点击某一篇文章时,得到文章的art_id

(2)      文章的浏览量会自增1:INCR article:art_id:views

(3)      文章浏览量的值:GET article:art_id:views

记录用户的文章数:

(1)      取出用户的id:若这个人的信息存在session中,通过session[‘user’][‘id’]取出,

若用户的信息存在redis中,通过HGET userid取出

(2)      当用户创建文章时数量自增1,INCR user:user_id:artCounts

(3)      当用户删除文章时数量自减1,DECR user:user_id:artCounts

(4)      查看用户的文章数:GET user:user_id:artCounts

 记录用户等级:

(1)      设置用户等级

SET user:user_id level

(2)      当满足某些情况时,自增1

INCR user:user_id

(3)      当用到等级时

GET user:user_id

 频率限制(每秒10次):

(1)      如果key==用户ip存在且值大于10次,return

(2)      设置为自增

INCR ip

(3)      当ip==1的时候,设置过期时间

EXPIRE ip 1

 带过期时间的短信验证码:

(1)      设置key,并设置过期时间

SET smslogin:手机号验证码 EX 过期时间

(2)      获取验证码:

GET smslogin:手机号

(3)      判断是否正确

 判断用户的邮箱是否可用:

(1)      设置一个激活码,并设置过期时间(5分钟内有效)

SET activeCode:user_id EX 300

(2)      发送邮件,包含一个链接,链接中包含激活码

(3)      判断激活码是否一致

 

2、  Hash:

 存储用户信息:

(1)      设置key

HSET user:user_id name ‘ ’

(2)      使用的时候

HGET user:user_id name

 可以记录文章浏览数,文章数,评论数:

(1)      设置key

HSET article:art_id artViews(artCounts、 artComment)value

(2)      每次浏览、评论、添加文章时

HINCRBY key artViews 1

(3)      删除评论、删除文章时

HDEL key

(4)      查看数量时

HGET key

 消息通知未读和已读:

(1)      设置未读消息(1条未读系统消息)

HSET user:user_id:message:nr system 1

(2)      当有多条未读消息自增1

HINCRBY user:user_id:message:nr system 1

(3)      当已读的时候

HSET user:user_id:message:nr system 0

 首次活动(比如双十二首次购买有啥活动):

(1)      设置key

HSET z
4000
j:hd_171212 user_id value=买的次数

(2)      每买一次,value自增1

HINCRBY zj:hd_171212 user_id1

(3)      获取值,判断是否为首次,然后。。。

HGET zj:hd_171212 user_id

 用作购物车:

(1)      设置key

HSET user:(user_id):name 商品名 数量

(2)      使用的时候

HSCAN key 0

 用作短信验证码:

(1)      设置key:

HSET smslogin:手机号 value 第几次发送(初始为0)

(2)      设置过期时间

EXPIRE smslogin:手机号 60

(3)      与上面的相比多了一个value,用于前台显示不同内容:

当value==0时,显示发送验证码

当value>0时,显示重新发送

 

3、  List:

 秒杀:

(1)      首先判断用户队列是否已满

LLEN zj_mx_171208:商品id

(2)      比如有10件商品,当用户队列不足10个时,

RPUSH zj_mx_171208:商品id 用户id

(3)      当超过10个时,提示秒杀结束,return回去

(4)      将用户队列入数据库

(5)      删除key

 消息队列:

(1)      首先将任务放到队列中

(2)      使用pop取出任务进行执行,并记录日志

(3)      任务完成后,删除key

 

4、  SADD:

 用户的关注、粉丝:

(1)      当关注别人的时候:

SADD 自己的id:follow 被关注的id

SADD 被关注的id:fans 自己的id

(2)      当取消关注的时候

SREM 自己的id:follow 被关注的id

SREM 被关注的id:fans 自己的id

(3)      查看自己的关注数及粉丝数

SCARD 自己的id:follow

SCARD 自己的id:fans

(4)      查看关注列表

SSCAN 自己的id:follow 0

(5)      查看粉丝列表

SSCAN 自己的id:fans 0

(6)      查看共同关注

SINTER 自己的id:follow 别人的id:follow

(7)      查看共同粉丝

SINTER 自己的id:fans 别人的id:fans

 智能推荐(以上述关注为例):

(1)      通过他人的关注与自己的关注求差集

SDIFF 别人的id:follow 自己的id:follow

 判断用户名是否已经注册:

(1)  在注册时

 将用户名存入:SADDusername 用户名

(2)  当另外一个人注册时,检查用户名是否已经存在

 SISMENBER username 用户名

(3)  若存在,return

 

5、  ZSet:权重

 优先推荐(以文章为例):

(1)      将文章的浏览量作为分数,文章id作为成员

ZADD article:recommend artViews art_id

(2)      比如优先推荐浏览量前五的文章

ZREVRANGE article:recomment 0 4

 商品推荐(以购物车为例):

(1)      当A商品与B商品同时出现在购物车中时

ZINCRBY shopcart:product:A 1 B

ZINCRBY shopcart:product:B 1 A

(2)      当A商品与C商品同时出现在购物车中时

INCRBY shopcart:product:A 1 C

INCRBY shopcart:product:C 1 A

(3)      当A商品与C商品再次同时出现在购物车中时

INCRBY shopcart:product:A 1 C

INCRBY shopcart:product:C 1 A

(4)      以此类推。。。。。。

(5)      在使用时,当用户将A加入了购物车,从shopcart:product:A中根据分数降序排列,

得到与之相关的N件商品,将N件商品推荐给用户

     ZREVRANGEshopcart:product:A 0 N-1

 

6、 分页效果(以用户为例):

有一个列表RPUSH user_num用户的id,用来存用户id,

有一个hash用来存用户信息,HMSETuser:user_id name … … …

(1)      当注册的时候

 将用户id存入user_num

 将用户信息存入user:user_id

(2)      分页实现

 用户总数:LSIZEuser_num

 获取某一页用户的id:LRANGEuser_num 0 -1

 遍历id获取某一页的用户数据:HSCANuser:user_id

 将用户数据遍历到页面上

(3)      当删除时

 删除用户数据:DEL user:user_id

 删除用户id:LREMuser_num 0 user_id

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息