zoukankan      html  css  js  c++  java
  • ssdb使用笔记

      ssdb是一款类似于redis的nosql数据库,不过redis是基于内存的,服务器比较昂贵,ssdb则是基于硬盘存储的,很容易扩展,对于一些对速度要求不是太高的应用,还是不错的选择。

      先记录一个比较坑的东西,具体的用法以后补充。

      ssdb删除数据的时候有很多中方法:

        flushdb   删除整个数据库中的所有数据

        qclear     删除列表类型的数据

        hclear     删除hash类型的数据

        zclear     删除有序集合类型的梳理

        del          删除字符串类型的数据

      不过,ssdb在删除数据的时候并不会立刻释放磁盘的空间,用作者的话说就是ssdb会在合适的时候去释放,这就会造成不知不觉中ssdb占用的磁盘空间越来越大,还不知道什么时候才会被释放,如果不及时处理的话,服务器卡死是很正常的事情,经过不断的寻找,终于被我发现了一个命令 compact , 这个命令会自动去释放应该被释放的磁盘空间,不过在使用的时候会造成ssdb卡慢,并且 compact 命令的执行速度也不快,但总算是可以立刻释放了,不用再担心服务器被撑爆。

      需要注意的是如果服务器已经快被撑爆了,那么你在执行 compact 的时候ssdb是有可能崩溃的,而且执行一次 compact 并不会释放所有应该释放的空间,可能需要多次执行才行

      还有一个比较坑的东西就是在删除数据的时候,会造成服务阻塞,其他任何写命令都执行不了,可读不可写。。。而且删除的超级慢。。。

      下面简单介绍一下ssdb的用法。

      一、服务器搭建

        环境为Mac

        首先到 https://github.com/ideawu/ssdb 查看官方文档,下载安装包

           wget https://github.com/ideawu/ssdb/archive/master.zip
           unzip master.zip
           cd ssdb-master
           make
    

         make的时候报了个错:ERROR! autoconf required! install autoconf first

        于是安装 autoconf

          brew install autoconf
    

         安装完成后继续编译

          make && make install
    

         没有报错,继续,下面启动ssdb服务,加-d参数为deamon模式 服务后台运行 推荐使用

          ./ssdb-server -d ./ssdb.conf
    

         或者

          ./ssdb-server ./ssdb.conf
    

        然后可以使用下面的命令连接到ssdb数据库,进行操作

          ./tools/ssdb-cli -h localhost -p 8888
    

        使用在命令行客户端中执行info命令结果如下:

        

        关闭数据库

          ./ssdb-server ./ssdb.conf -s stop
    

        PS: ssdb服务在启动的时候会在 var 目录下生成一个ssdb.pid文件,当ssdb由于意外关闭的时候这个文件不会被删除,因此当重新启动ssdb服务的时候,会报下面的错误:

        Fatal error!
        Pidfile ./var/ssdb.pid already exists!
        Kill the running process before you run this command,
        or use '-s restart' option to restart the server.

        此时你可以手动删除var/ssdb.pid文件,然后启动ssdb服务,或者在启动ssdb服务的时候使用如下命令

          ./ssdb-server -d ./ssdb.conf -s restart
    

        -s 参数支持三个选项 stop, start , restart, 默认情况下可不加 -s 参数,此时默认为start选项

        !!! PS  当ssdb由于某个特别耗时操作卡死的时候,如果想停止命令的执行,目前我只知道重启这个办法。但是ssdb重启使用 restart 特别慢,所以可以使用kill -9 杀掉进程,然后再启动。。  不知道会有啥不良影响,我试了一次,还没发现问题。

      二、数据库操作

        ssdb中的数据类型分为4中,字符串类型、列表类型、哈希类型、有序集合类型。

        这四种数据类型的操作命令一般都以固定的字母开头:

          s  字符串类型

          q  列表类型

          h  哈希类型

          z  有序集合类型

        (1)首先,我们最关心的一般是数据库中存在着哪些键,在redis中,使用keys命令可以查看当前数据库中的所有键,但ssdb中却没有这样功能的命令,这可能会让让用惯了redis的同学感觉有点别扭。

        在ssdb中查看存在的键是分类型用不同的命令的:

          keys  字符串类型

          qlist   列表类型

          hlist   哈希类型

          zlist   有序集合类型

        这四个命令的参数和用法都一样,例如

        

         前两个参数用于确定键的范围,a、z 即筛选键名首字母在a-z之间的键,若为''、'' 则不限制范围,最后一个参数用来限制返回的键的最大个数,为必需参数。

      可以转载,但请注明出处,做人要厚道一点,谢谢

  • 相关阅读:
    Combine 框架,从0到1 —— 4.在 Combine 中使用计时器
    Combine 框架,从0到1 —— 4.在 Combine 中使用通知
    Combine 框架,从0到1 —— 3.使用 Subscriber 控制发布速度
    Combine 框架,从0到1 —— 2.通过 ConnectablePublisher 控制何时发布
    使用 Swift Package Manager 集成依赖库
    iOS 高效灵活地配置可复用视图组件的主题
    构建个人博客网站(基于Python Flask)
    Swift dynamic关键字
    Swift @objcMembers
    仅用递归函数操作逆序一个栈(Swift 4)
  • 原文地址:https://www.cnblogs.com/dyfblog/p/5894518.html
Copyright © 2011-2022 走看看