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 zj: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