segmentfault的标签(tag)是如何储存的?

Viewed 4696

请看这个页面:https://segmentfault.com/tags
可以看到,标签被分类了。
是否可以根据这个页面,认定segmentfault一定有tag_categorys表?
还是没有tag_category,只是在前端渲染的时候用了一堆堆的if?或者这个页面压根就是静态写的?那又如何反映tag的热门度呢?

3 Answers

其实存的是一个PHP的数组

tags.php


return [
    [
        'iOS 开发' => ['ios', 'iphone', 'ipad', 'objective-c', 'sqlite', 'safari'],
         'Android 开发' => ['android', 'java', 'eclipse', 'xml'],
    ],
    [
         '开发语言' =>  ['java', 'c', 'c++', 'php']
    ],
];

然后把数据存到redis中,用户访问都是从redis中取数据。
当然放到MySQL中也是可以的,只不过这些数据不是经常改动,加上tag相关的数据类目有很多,用MySQL需要很多表,所以目前采用的是文件管理的方式。

是的,代码本来就是每天都要提交的,改一下和录入数据库差不多。

是这样吗 思路不错哦

如果这样的话 标签下的分类就是一层不变的 实际上应该会根据热门度发生变化的吧 怎么说

tag数据最终要落地,应该是存在MySQL表里,然后redis里面缓存经常使用的属性。

问题关联tag_id就行,为什么要tag去关联问题呢

可能是用的redis的set

想一下redis的set item要储存tag的id,title,slug,description,category,还要关联到每一个问题,想想都觉得头疼。