【Redis】实现点赞功能
一、实现笔记点赞
使用redis实现点赞功能,对于一个笔记来说,不同用户只能是点赞和没点赞,点赞过的笔记再点击就应该取消点赞,所以实际上根据需求,我们只需要将点赞的数据存到对应的笔记里,查看对应的笔记相关的数据,看看点赞的用户有没有自己当前用户,如果有那么这个笔记的点赞数量like应该-1,如果没有那应该like+1。
那么可以用数据库创建一张表来维护这个数据,不多对于数据库来说这个有点重了,首先这个数据不是特别重要,其次这个数据可以访问量操作次数特别高,对于数据库来说频繁进行读取数据,导致大量的io操作,对数据的压力还是比较大的,然后它效率相比redis来说比较慢,所以使用redis是一个比较好的操作,因为他是存在内存中,所以不会过多消耗性能,而且他读取写操作效率高。
那么我们可以建一个set,存对应的笔记中有哪些用户点赞了,如果点赞的用户不在其中,就可以将用户id记录进去,如果存在就不允许进入,set是防止同一个用户点多次,因为set不允许重复。
二、实现笔记点赞排行榜顺序
使用sortedset,它里面有一个score值,可以通过score这个值进行排序,ZSCORE获取对应的socre值,ZRANGE获取score值的范围的排序。将之前的业务的score改为实际戳,ZSET列表里存的是点赞过的id,然后有一个score 对应的是点赞的时间,然后根据zrange 查看排行榜 (升序) 获取的范围有一个特点,只是能获取对应值内的数据。然后如果用sql查的时候用in语句,如果是(5,1)那么sql会认为是(1,5),所以要用order by field指定顺讯。