84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
小伙看你根骨奇佳,潜力无限,来学PHP伐。
用redis做缓存。
key: useridvalue: set(articleid)
用户登录时,查一次redis,如果redis中不存在,则query mysql,并update redis用户点赞时,insert mysql 同时update redis
用articleid做key,记录点赞过的用户。
对于一个用户查询对某一个article是否点过赞,需要使用到hash,不然就得从集合中进行遍历,效率较低。建议每个以articleid作为key,数据结构采用hash,hash的key为userId,value直接是1即可。这样查询时间复杂度是接近O(1),而如果单纯的使用集合的话查询复杂度是O(n)。至于不能持久化的话,将数据异步同步到mysql即可,保证两边能够同步进行更新即可。mysql用于存储,而redis用于查询,当redis重启的话需要一个程序去将mysql中的数据同步到redis中。
点赞时间记录有用吗?没用的数据记录了徒增烦恼
用redis做缓存。
key: userid
value: set(articleid)
用户登录时,查一次redis,如果redis中不存在,则query mysql,并update redis
用户点赞时,insert mysql 同时update redis
用articleid做key,记录点赞过的用户。
对于一个用户查询对某一个article是否点过赞,需要使用到hash,不然就得从集合中进行遍历,效率较低。
建议每个以articleid作为key,数据结构采用hash,hash的key为userId,value直接是1即可。
这样查询时间复杂度是接近O(1),而如果单纯的使用集合的话查询复杂度是O(n)。
至于不能持久化的话,将数据异步同步到mysql即可,保证两边能够同步进行更新即可。mysql用于存储,而redis用于查询,当redis重启的话需要一个程序去将mysql中的数据同步到redis中。
点赞时间记录有用吗?没用的数据记录了徒增烦恼