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之间的键,若为''、'' 则不限制范围,最后一个参数用来限制返回的键的最大个数,为必需参数。

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

  • 相关阅读:
    如何监控IT正常运行时间?
    系统扩展正在取代macOS内核扩展,这会对您有何影响?
    IT管理员需要的10大网络工具
    自动化管理员工生命周期,集成Ultipro
    OpManager MSP:ManageEngine的新型MSP重点网络监控解决方案
    vue中axios的使用
    vue中axios的介绍
    移动端适配--关于根元素font-size和rem
    JavaScript---数组去重
    array数组的方法
  • 原文地址:https://www.cnblogs.com/dyfblog/p/5894518.html
Copyright © 2011-2022 走看看