V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
verfino
V2EX  ›  Redis

Redis的List,如何控制其长度?

  •  
  •   verfino ·
    helix-dan · 2013-04-12 11:40:21 +08:00 · 28429 次点击
    这是一个创建于 4236 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在有一个List队列,不停的写入,并读取最近写入的3笔,但是长度只能不断增加

    现在用的方法是

    1. 初始化这个list,插入5个值
    2. 每次新lpush进去的时候,执行完后用rpop一个

    但是这个队列大概使用频度巨大,保守估计进出1000次/s左右,而且要持续2个小时左右时间

    server是用NodeJS来做的,不会有大的阻塞

    求控制Redis长度更好的解决方案
    6 条回复    1970-01-01 08:00:00 +08:00
    Cadina
        1
    Cadina  
       2013-04-12 13:38:53 +08:00   ❤️ 1
    看下LTRIM这个命令
    http://redis.io/commands/ltrim
    每次插入完LTRIM一下
    verfino
        2
    verfino  
    OP
       2013-04-12 14:00:21 +08:00
    @Cadina 谢谢 恐怕真的只能通过这个控制 Stack Overflow里面求助也是只有这个方法
    Cadina
        3
    Cadina  
       2013-04-12 14:17:40 +08:00
    @verfino 这个也是redis推荐的用法呢
    verfino
        4
    verfino  
    OP
       2013-04-12 15:46:22 +08:00
    @Cadina 确实,看了下网上大部分介绍redis api的文章....貌似都是这么举例用的
    ugg
        5
    ugg  
       2013-06-16 00:40:41 +08:00   ❤️ 1
    可以用个小技巧,比如你需要最新的10条记录,可以使list保存15条记录,每到15条的时候再去删除到10条,这样操作的次数就会大大减少~
    verfino
        6
    verfino  
    OP
       2013-06-17 21:19:30 +08:00
    5次数据更新时
    你的方案是: 判断5次长度,然后对Redis进行一次del操作
    相比我之前: 5次del操作

    :-D 明天去公司测试下效果,谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2859 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:00 · PVG 15:00 · LAX 23:00 · JFK 02:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.