留言

在这里填写留言和我交流.

SSDB 相关的问题, 建议提在这里: http://www.ideawu.net/blog/ssdb, 就是本页顶部菜单的"SSDB"链接.

Views: 132779

581 Responses to "留言"

  • zsize命令目前是返回整个zset的key的数量,要想返回 score 在 min 和 max 之间的数量,必须用zscan查询,才能得到数量。能增加这个命令吗? Reply
    @whl: 多谢反馈, 我会计划在近期加入这个命令. Reply
    @ideawu: 真心感谢博主的贡献! Reply
  • 使用博主的SSDB后 感觉一个字赞,两个字很赞,三个字非常赞

    弱弱地问一下,SSDB是怎么控制内存的使用
    随着迁移到SSDB的数据量的增加 Key有3.5亿条
    其使用的内存也在疯狂的增长
    PID USER VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    2832 root 10.2g 5.8g 5.2g S 26.6 76.2 1203:15 ssdb-server
    这样是否正常?后面是否会出一个内存使用限制值的配置呢? Reply
    @Qhappy: 请问3.5亿条数据用掉多少内存? Reply
    @Qhappy: 多谢你的支持!

    根据你的情况, ssdb-server 占用的内存应该会持续下降. 如果你观察一段时间, 如几个小时后, 内存还没有释放的话, 可能是有问题. 到时, 麻烦你反馈一下.

    PS: 你可以用 ssdb-cli 连接到 ssdb-server, 然后执行 compact 命令, 强制让 ssdb 整理数据和内存. Reply
    @ideawu: 谢博主 用 compact 命令内存整理可以释放内存。
    我这边测试过,业务停止后ssdb内存是正常释放出来的。
    先运行一段时间
    再次感谢谢博主无私的贡献。。。 Reply
  • 请教博主,要想清空整个数据库里的所有数据用什么方式?直接删除文件? Reply
    @xmxoxo: 有两种方法:

    1. 用 ssdb-cli 连接, 然后执行 flushdb.
    2. 停止 ssdb-server 进程, 删除 data 和 meta 两个目录, 再重新启动. Reply
  • 改成slave模式后,连接不上slave
    # /usr/local/ssdb/ssdb-cli -h 127.0.0.1 -p 8888
    ssdb (cli) – ssdb command line tool.
    Copyright (c) 2012-2013 ideawu.com

    ‘h’ or ‘help’ for help, ‘q’ to quit.

    Connection error: (111, ‘Connection refused’)
    Traceback (most recent call last):
    File "/usr/local/ssdb/deps/cpy/cpy.py", line 65, in ?
    execfile(dstfile)
    File "/usr/local/ssdb/_cpy_/ssdb-cli.py", line 354, in ?
    sys.exit(0)
    SystemExit: 0 Reply
    @xmxoxo: Hi, 你的配置文件能贴上来吗? ps aux 看一下进程是否已经启动? Reply
    @ideawu:
    # ps aux |grep ssdb
    root 6876 0.0 1.9 415280 40048 ? Ssl 15:54 0:01 /usr/local/ssdb/ssdb-server -d /usr/local/ssdb/ssdb_slave.conf
    root 8754 0.0 0.0 63468 768 pts/2 R+ 19:48 0:00 grep ssdb
    # /usr/local/ssdb/ssdb-cli
    ssdb (cli) – ssdb command line tool.
    Copyright (c) 2012-2013 ideawu.com

    ‘h’ or ‘help’ for help, ‘q’ to quit.

    Connection error: (111, ‘Connection refused’)
    Traceback (most recent call last):
    File "/usr/local/ssdb/deps/cpy/cpy.py", line 65, in ?
    execfile(dstfile)
    File "/usr/local/ssdb/_cpy_/ssdb-cli.py", line 354, in ?
    sys.exit(0)
    SystemExit: 0

    配置文件如下:
    # ssdb-server config

    # relative to path of this file, must exist
    work_dir = ./var_slave
    pidfile = ./var_slave/ssdb.pid

    server:
    ip: 0.0.0.1
    port: 8888

    replication:
    slaveof:
    # sync|mirror, default is sync
    type: sync
    ip: 192.168.40.6
    port: 8888

    logger:
    level: info
    output: log_slave.txt
    rotate:
    size: 10000000

    leveldb:
    # in MB
    cache_size: 500
    # in KB
    block_size: 32
    # in MB
    write_buffer_size: 64
    # in MB
    compaction_speed: 200
    # yes|no
    compression: no Reply
    @xmxoxo:
    发现了,IP配置写成0.0.0.1了。 Reply
  • 建议增加更改 key 名字的命令 Reply
    @pozen: 谢谢你的建议, 我会进行考虑. Reply
    @ideawu: 谢谢。我想起了一个更重要的功能,就是事务。希望你也考虑一下。 Reply
  • 博主你好,我测试了一下master-slave模式,好象不会自动同步复制?
    我是这样测试的:
    将slave连接到master,启动后在master的DEbug里有看一同步复制的信息,
    然后开一个客户端连到master里写数据,写完后连到slave里查看刚才写的数据,发现并没有同步过来。 Reply
    @xmxoxo: 你好. 请把 master 和 slave 数据目录下的 meta 目录删除, 然后都重启试试. Reply
  • ideawu您好,我尝试着设计一下简单的系统,不知道使用是否正确,还请指教:
    页面点击数统计系统
    目标:用于统计全站各页面的浏览量;
    数据结构:
    关系型数据库表中含有的字段:频道编码,信息ID号,浏览量值;
    设计成一个HashMap:
    {频道编码,信息ID,浏览量}
    "news",1,2343


    增加对点击量的排名用zset,每个频道都要有一个zset了。
    {频道号排名,信息号,浏览量}
    {"news_sort_by_click",1,24343}

    浏览量更新:
    $channel="news"; //新闻频道;
    $infoid=333; //333号文章
    $count=$ssdb->hget($channel,$infoid); //读出当前的浏览量;
    if (empty($count)){$count=0;} //处理异常;
    $count+=1; //浏览量加1;
    $ssdb->hset($channel, $infoid, $score); //写回浏览量;
    $ssdb->zset($channel."_sort_by_click", $infoid, $count); //更新排序列

    浏览量获取
    $channel="news"; //新闻频道;
    $infoid=333; //333号文章
    $count=$ssdb->hget($channel,$infoid); //读出当前的浏览量;
    if (empty($count)){$count=0;} //处理异常;
    echo $count; //输出浏览量

    获取前某栏目点击率排名前10
    $channel="news"; //新闻频道;
    $top10=$ssdb->zscan($channel."_sort_by_click","","",10);
    echo $top10; Reply
    @xmxoxo: Hi, 你的设计有些冗余了, 其实你只需要一个zset即可, 并且可以使用 zincr() 命令.

    浏览量更新: $ssdb->zincr($channel, $infoid, 1);
    浏览量获取: (int)$ssdb->zget($channel, $infoid);
    排行榜: $ssdb->zrscan($channel, ”, ”, ”, 10);

    用 zrscan, 因为 zset 是从小到大排序的. 注意 zscan 的参数个数. 相关的文档: http://www.ideawu.com/ssdb/docs/php/ Reply
    @ideawu: 非常感谢!SSDB功能很强大啊。
    我也觉得我的设计里有点问题,相同的数据感觉存了两份。 Reply
  • 博主请教下slave功能是怎么使用的啊?在通过配置文件ssdb_slave.conf启动后一直显示replication部分配置的ip和端口号链接失败,它和server的IP是否要配置成不一样? Reply
    @yang: 你好, master 和 slave 必须用不同的 ip(或者相同 ip 端口不同也可). Reply
    @ideawu: 将master和slave的端口号都设置成127.0.0.1,端口一个设置成8888和8889后程序正常启动,通过ssdb_cli可以正常连上端口8888,但是链接8889失败。请教下这个slave的作用体现在哪里呀?没有看太明白 Reply
    @yang: Hi, 如果你不明白 slave 的作用, 那你先只启动 8888 端口的那个用着就行. 等你需要的时候, 自然会明白. ssdb 会生成一个名为 log.txt 的文件, 你可以看看它的输出. Reply
  • 感谢作者开源出这么好的软件
    使用的过程中有个问题
    看过文档 不知道怎么统计SSDB中KV的总数。
    mysql中有 userID 和USERNAME两个字段有几千万条。
    用php按USERID分段转到SSDB中。现在想知道SSDB中一共有多少KV? Reply
    @Qhappy:
    改用了HASHmap就好了。谢谢博主 Reply
    @Qhappy: 哈哈, 我正要回复, 发现你已经自己找到了. Reply
  • zrange和zrrange返回的结果一样,zrrange没有反序。
    博主看下,是不是有这个问题? Reply
    @whl: 多谢反馈, fixed. Reply

« [4][5][6][7][8][9][10][11][12] » 8/28

Leave a Comment