【转载】ssdb安装部署

转载地址:https://www.cnblogs.com/dyfblog/p/5894518.html

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 查看官方文档,下载安装包

1
2
3
4
wget https://github.com/ideawu/ssdb/archive/master.zip
unzip master.zip
cd ssdb-master
make
    make的时候报了个错:ERROR! autoconf required! install autoconf first

于是安装 autoconf

1
brew install autoconf
    安装完成后继续编译

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

1
./ssdb-server -d ./ssdb.conf
    或者

1
./ssdb-server ./ssdb.conf
    然后可以使用下面的命令连接到ssdb数据库,进行操作

1
./tools/ssdb-cli -h localhost -p 8888
    使用在命令行客户端中执行info命令结果如下:

关闭数据库

1
./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服务的时候使用如下命令

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2017年回顾及总结

从2015毕业至今,在c开发领域算起来已经差不多两年多的时间了。在这三年的时间里,涉及到的c领域的技术基本上从广度上有了一个大概的学习和认知。各个方面的知识都有所掌握,包括c底层实现,网络通信,并行开发&#xff0c…

Amr and Pins

Description Amr loves Geometry. One day he came up with a very interesting problem. Amr has a circle of radius r and center in point (x, y). He wants the circle center to be in new position (x, y). In one step Amr can put a pin to the border of the circl…

TCP/IP学习

http://blog.csdn.net/column/details/15153.html?

ngnix 作用(通俗易懂)【转载】

作者:RayeWang www.raye.wang/2017/02/24/quan-mian-liao-jie-nginxdao-di-neng-zuo-shi-yao/ 前言 本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整&#xff0…

C++11并发实战(专栏)

http://blog.csdn.net/column/details/ccia.html?&page2

LCIS

Problem DescriptionAlex has two sequences a_1,a_2,...,a_na​1​​,a​2​​,...,a​n​​ and b_1,b_2,...,b_mb​1​​,b​2​​,...,b​m​​. He wants find a longest common subsequence that consists of consecutive values in increasing order. InputThere are mu…

TimeUnit.SECONDS.sleep()和sleep区别

刚看到TimeUnit.SECONDS.sleep()方法时觉得挺奇怪的,这里怎么也提供sleep方法? public void sleep(long timeout) throws InterruptedException {if (timeout > 0) {long ms toMillis(timeout);int ns excessNanos(timeout, ms);Thread.sleep(ms, …

c++11并发指南系列

https://www.cnblogs.com/haippy/archive/2013/08/27/3284540.html

hashmap另一种初始化

代码&#xff1a; new HashMap<String,Integer>() {{put("a", 0);put("b", 0);put("c", 0);}}; 用处&#xff1a; for (Entry<String, String> entry : set) {value entry.getValue();try {if(k 5) {break;}json new JSONObjec…

怎么去阅读这本书

最近打算对并发编程和网络编程进行一定深度的学习&#xff0c;

理解 shared_ptr实现copy-on-write(COW)

转自&#xff1a;http://blog.csdn.net/zhangxiao93/article/details/52792888 shared_ptr实现COW&#xff08;Copy-On-Write&#xff09; 前不久在《Linux多线程服务端编程使用muduoC网络库》2.8节看到这个内容&#xff0c;一直没有真正理解&#xff0c;后来在书中7.3中再次提…

window连接不上ssdb的问题

window上访问虚拟机ssdb 1&#xff09;首先要修改ssdb 的配置文件ssdb.conf&#xff0c;修改server的节点下ip如下&#xff1a; server节点下的ip意思是绑定哪个ip地址能够访问服务 &#xff0c;也就是说只能通过的ip可以访问ssdb server。 ps&#xff1a; 127.0.0.1 //绑定…

分布式系统的工程化开发方法

转自&#xff1a;http://blog.csdn.net/solstice/article/details/5950190 以下是我在珠三角技术沙龙 2010Q4 上的演讲投影片。 演讲视频&#xff1a; http://www.youku.com/playlist_show/id_5238686.html ---------- ---------- ------

java操作ssdb:set、map、list..

网上收集的代码模板&#xff1a; import com.udpwork.ssdb.*;/** * SSDB Java client SDK demo. */ public class Demo { public static void main(String[] args) throws Exception { SSDB ssdb null; Response resp; byte[] b; ssdb new SSDB("127.0.0.1", 8888…

程序员的知识广度

转自&#xff1a;http://blog.csdn.net/EGEFCXzo3Ha1x4/article/details/79070190 “知识变现”的口号一喊 确实让很多人都摩拳擦掌蓄势待发 那么作为程序员的mu们 不管是思维逻辑&#xff0c;还是知识广度 是不是都迫不及待了 今天&#xff0c;我们也来测试下 【单选题】 1 …

【转载】RocketMQ优秀文章

rocketMq详解&#xff1a;http://blog.csdn.net/column/details/learningrocketmq.html rocketMq实践&#xff1a;https://pan.baidu.com/s/1kTXE4PD rocketMq的原理&#xff1a;https://pan.baidu.com/s/1bogcpgN rocketMq用户指南&#xff1a;https://pan.baidu.com/s/1kT…

多线程---条件变量

互斥器和条件变量的区别&#xff1a;互斥器具有加锁原语&#xff0c;用来进行排他性的访问共享数据&#xff0c;而条件变量具有等待原语&#xff0c;用于等待某个事件的发生。 等待条件变量的正确姿势&#xff1a; void wait() {mutex.lock()while (wait_flag false) {conditi…

ngnix安装

一、安装Nginx&#xff1a; 1 : wget下载: http://nginx.org/download/nginx-1.4.2.tar.gz 2 : 进行安装&#xff1a; tar -zxvf nginx-1.6.2.tar.gz 3 : 下载锁需要的依赖库文件&#xff1a; yum install pcre yum install pcre-devel yum install zlib yum install zl…

ARP-地址解析协议(在实践中深入理解ARP协议)

在同一个网络&#xff08;无特别说明&#xff0c;均指以太网络&#xff09;中进行通信的主机&#xff0c;必须要拥有目标主机的MAC地址才能够正确地将数据发送给目标主机&#xff0c;那么如何知道目标主机的MAC地址呢&#xff1f;可以通过ARP协议。ARP协议就是用来获取目标IP地…

Maven私服

1 Maven私服简介 Maven 私服是一种特殊的Maven远程仓库&#xff0c;它是架设在局域网内的仓库服务&#xff0c;用来代理位于外部的远程仓库&#xff08;中央仓库、其他远程公共仓库&#xff09;。 1.1 下载构件顺序 建立私服后&#xff0c;当局域网内的用户需要某个构件时&a…