› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
COLDE
V2EX  ›  MySQL

小菜我准备写一个简单的论坛,如果要实现像知乎的点赞功能,记录一个帖子的点赞数和对应的点赞用户列表,该怎么设计数据库和用什么方法去应对并发读写?

  •  
  •   COLDE · Jan 16, 2016 · 8497 views
    This topic created in 3914 days ago, the information mentioned may be changed or developed.
    7 replies  •  2016-02-25 02:08:33 +08:00
    bobuick
        1
    bobuick  
       Jan 16, 2016
    用 redis 好了, list , smember, set 什么的都满足了
    COLDE
        2
    COLDE  
    OP
       Jan 16, 2016
    @bobuick 好的谢谢,不过 redis 是保存到内存中,万一服务器挂了,不是什么数据都没有了吗?我不太清楚 redis 的数据持久化怎么处理
    hayao650
        3
    hayao650  
       Jan 16, 2016 via Android
    redis 也可以做持久化
    penjianfeng
        4
    penjianfeng  
       Jan 16, 2016
    数据库设计用最简单的 key-value 对应,可以建一个 upvote 表,帖子 id+用户 id,这样可以最快速的查看帖子的点赞人数和某用户点赞过的帖子,也可以根据需要建一个帖子点赞数的表,帖子 id+点赞数量.同时建议把这两张表扔 redis,memcache 这类缓存,减小数据库压力.如果是用 go 这类静态性语言,也可以存数据库后扔内存一份,反正 key-value 的也花不了多少内存
    heaton_nobu
        5
    heaton_nobu  
       Jan 16, 2016
    用户少的时候不需要考虑并发,用户多的时候“赞”的功能其实不是核心功能,是允许数量出现偏差的,页面上只要+ 1 就好,然后请求传到后端慢慢解决
    COLDE
        6
    COLDE  
    OP
       Jan 17, 2016
    谢谢大家,打算用 redis 的 list,用帖子的 ID 做 key,存储对应的点赞用户 ID 的列表
    zonghua
        7
    zonghua  
       Feb 25, 2016 via Android
    @COLDE 要显示点赞的用户头像怎么办?像微信朋友圈。使用 N+1 的关键查询?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   788 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 22:03 · PVG 06:03 · LAX 15:03 · JFK 18:03
    ♥ Do have faith in what you're doing.