V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
binarymann
V2EX  ›  问与答

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

  •  
  •   binarymann · Mar 2, 2015 · 3665 views
    This topic created in 4075 days ago, the information mentioned may be changed or developed.
    要怎么实现才不会对数据库的读写不造成很大的压力呢?
    14 replies    2015-03-02 17:22:39 +08:00
    kslr
        1
    kslr  
       Mar 2, 2015 via Android
    我猜v2是redis存储然后if xx in xx
    9hills
        2
    9hills  
       Mar 2, 2015 via iPad
    @kslr 最早的实现是在前端屏蔽,所以数据库层没有任何压力。但是屏蔽列表是存在redis的。。

    现在不知道,以前好像有相关主题
    typcn
        3
    typcn  
       Mar 2, 2015
    压力最轻的是在客户端屏蔽

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

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

    .user-xxx{ display:none }
    cevincheung
        4
    cevincheung  
       Mar 2, 2015
    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  
       Mar 2, 2015 via Android
    有啥压力,被当前用户 block 的用户 id 完全可以序列化后存到一个字段里,在输出帖子和回复的循环里判断下,uid 在这个列表里就 continue。
    NeoAtlantis
        6
    NeoAtlantis  
       Mar 2, 2015
    我对在客户端屏蔽有个疑问:如果这样,分页还能否保证每页具有足够的帖子?比如首页开始是显示20个帖子,这样屏蔽掉就不够数了啊。
    evlos
        7
    evlos  
       Mar 2, 2015 via iPhone
    @NeoAtlantis +1 最纠结的就是这个问题了
    emric
        8
    emric  
       Mar 2, 2015
    我这种后台渣的表示关注.
    panxianhai
        9
    panxianhai  
       Mar 2, 2015 via Android
    @NeoAtlantis 目前v2每页帖子也是不一致的。
    NeoAtlantis
        10
    NeoAtlantis  
       Mar 2, 2015
    @panxianhai 合着是只要不被人发现就行了么……
    typcn
        11
    typcn  
       Mar 2, 2015
    @NeoAtlantis 这个都无所谓的,你看贴吧那鸡肋屏蔽,楼层号都不连续了
    SuujonH
        12
    SuujonH  
       Mar 2, 2015
    @NeoAtlantis 加个判定已输出显示的个数就好了吧

    @typcn 我觉得贴吧是故意的的,不然都不知道被屏蔽了,看着完全跑题的语句,至少知道有帖子被屏蔽了...
    NeoAtlantis
        13
    NeoAtlantis  
       Mar 2, 2015
    @SuujonH
    @typcn

    这样更有问题了,如果不补上后续的贴子,贴吧那种有的神贴一删几十几百楼的怎么办?不能翻页时翻出来好几页没有楼啊。。。
    evlos
        14
    evlos  
       Mar 2, 2015 via iPhone
    @NeoAtlantis 删帖和屏蔽用户的情况完全不一样哦,是不是不小心搞混了?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3229 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 14:22 · PVG 22:22 · LAX 07:22 · JFK 10:22
    ♥ Do have faith in what you're doing.