V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
binarymann
V2EX  ›  问与答

请问 block 用户的功能是怎么实现的呢?

  •  
  •   binarymann · 2015-03-02 00:03:31 +08:00 · 3311 次点击
    这是一个创建于 3581 天前的主题,其中的信息可能已经有所发展或是发生改变。
    要怎么实现才不会对数据库的读写不造成很大的压力呢?
    14 条回复    2015-03-02 17:22:39 +08:00
    kslr
        1
    kslr  
       2015-03-02 00:13:38 +08:00 via Android
    我猜v2是redis存储然后if xx in xx
    9hills
        2
    9hills  
       2015-03-02 01:28:27 +08:00 via iPad
    @kslr 最早的实现是在前端屏蔽,所以数据库层没有任何压力。但是屏蔽列表是存在redis的。。

    现在不知道,以前好像有相关主题
    typcn
        3
    typcn  
       2015-03-02 02:34:15 +08:00
    压力最轻的是在客户端屏蔽

    每个人的回复都加上一个指定的 class

    用户屏蔽了谁,就给他输出

    .user-xxx{ display:none }
    cevincheung
        4
    cevincheung  
       2015-03-02 04:47:24 +08:00
    pgsql:

    select * from posts where node_id = ? and author_id not in (select blockd_user_id from blocks where user_id = ?)

    效率还不错

    Ps.: 感觉这样好扯淡
    Jat001
        5
    Jat001  
       2015-03-02 05:17:50 +08:00 via Android
    有啥压力,被当前用户 block 的用户 id 完全可以序列化后存到一个字段里,在输出帖子和回复的循环里判断下,uid 在这个列表里就 continue。
    NeoAtlantis
        6
    NeoAtlantis  
       2015-03-02 05:41:50 +08:00
    我对在客户端屏蔽有个疑问:如果这样,分页还能否保证每页具有足够的帖子?比如首页开始是显示20个帖子,这样屏蔽掉就不够数了啊。
    evlos
        7
    evlos  
       2015-03-02 05:50:45 +08:00 via iPhone
    @NeoAtlantis +1 最纠结的就是这个问题了
    emric
        8
    emric  
       2015-03-02 06:00:12 +08:00
    我这种后台渣的表示关注.
    panxianhai
        9
    panxianhai  
       2015-03-02 07:12:52 +08:00 via Android
    @NeoAtlantis 目前v2每页帖子也是不一致的。
    NeoAtlantis
        10
    NeoAtlantis  
       2015-03-02 07:54:04 +08:00
    @panxianhai 合着是只要不被人发现就行了么……
    typcn
        11
    typcn  
       2015-03-02 08:10:51 +08:00
    @NeoAtlantis 这个都无所谓的,你看贴吧那鸡肋屏蔽,楼层号都不连续了
    SuujonH
        12
    SuujonH  
       2015-03-02 10:15:23 +08:00
    @NeoAtlantis 加个判定已输出显示的个数就好了吧

    @typcn 我觉得贴吧是故意的的,不然都不知道被屏蔽了,看着完全跑题的语句,至少知道有帖子被屏蔽了...
    NeoAtlantis
        13
    NeoAtlantis  
       2015-03-02 11:14:20 +08:00
    @SuujonH
    @typcn

    这样更有问题了,如果不补上后续的贴子,贴吧那种有的神贴一删几十几百楼的怎么办?不能翻页时翻出来好几页没有楼啊。。。
    evlos
        14
    evlos  
       2015-03-02 17:22:39 +08:00 via iPhone
    @NeoAtlantis 删帖和屏蔽用户的情况完全不一样哦,是不是不小心搞混了?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4979 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:36 · PVG 17:36 · LAX 01:36 · JFK 04:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.