SSDB是一个C/C++语言开发的高性能开源NoSQL数据库服务器,支持Key-value, Keyhashmap, Key-zset(sorted set) 等数据结构,十分适合存储数亿条级别的列表, 排序表等集合数据, 是Redis的替代和增强方案。
特性:
1.替代 Redis 数据库, Redis 的100倍容量
2.LevelDB 网络支持, 使用C/C++ 开发
3.Redis API 兼容, 支持 Redis 客户端
4.适合存储集合数据, 如 list, hash, zset...
5.客户端 API 支持的语言包括: C++, PHP, Python,Cpy,Java,Nodejs,Ruby, Go等
6.持久化的队列服务
7.主从复制,支持双主(双master)和多主架构, 负载均衡
8.图形化管理工具(phpssdbadmin)
架构图:
SSDB 具有和 Redis 相似的 API,持的客户端包括: PHP, C++, Python, Java, Lua, Ruby,Nodejs,Go,etc。
官网地址:http://ssdb.io/
中文地址:http://ssdb.io/zh_cn/
项目地址: https://github.com/ideawu/ssdb
项目文档:https://github.com/ideawu/ssdb-docs
博客文档:http://www.ideawu.net/blog/category/ssdb
一、SSDB与Redis比较
二、安装部署
SSDB不仅仅支持主从,主主模式,还支持多主模式,下面我们以主主的模式演示一下SSDB的安装和使用。
环境:
192.168.36.54:8888
192.168.36.189:8888
1.安装
mkdir /home/slim/ssdb
wget https://github.com/ideawu/ssdb/archive/master.zip
unzip master
cd ssdb-master
make PREFIX=/home/slim/ssdb
make PREFIX=/home/slim/ssdb install
2.配置
SSDB 的配置文件是一种层级 key-value 的静态配置文件, 通过一个 TAB 缩进来表示层级关系. 以 '#' 号开始的行是注释。
- # ssdb-server config
- # MUST indent by TAB!
- # relative to path of this file, directory must exists
- work_dir = ./var
- pidfile = ./var/ssdb.pid
- server:
- ip: 192.168.36.54
- port: 8888
- # bind to public ip
- #ip: 0.0.0.0
- # format: allow|deny: all|ip_prefix
- # multiple allows or denys is supported
- #deny: all
- #allow: 127.0.0.1
- #allow: 192.168
- # auth password must be at least 32 characters
- #auth: very-strong-password
- replication:
- binlog: yes
- # Limit sync speed to *MB/s, -1: no limit
- sync_speed: -1
- slaveof:
- # to identify a master even if it moved(ip, port changed)
- # if set to empty or not defined, ip:port will be used.
- id: svc_1
- # sync|mirror, default is sync
- type: mirror
- ip: 192.168.36.189
- port: 8888
- logger:
- level: debug
- output: log.txt
- rotate:
- size: 1000000000
- leveldb:
- # in MB
- cache_size: 500
- # in KB
- block_size: 32
- # in MB
- write_buffer_size: 64
- # in MB
- compaction_speed: 1000
- # yes|no
- compression: yes
另一台机器配置类似。配置说如下:
work_dir: ssdb-server 的工作目录, 启动后, 会在这个目录下生成 data 和 meta 两个目录, 用来保存 LevelDB 的数据库文件. 这个目录是相对于 ssdb.conf 的相对路径, 也可以指定绝对路径。
server: ip 和 port 指定了服务器要监听的 IP 和端口号. 如果 ip 是 0.0.0.0, 则表示绑定所有的 IP. 基于安全考虑, 可以将 ip 设置为 127.0.0.1, 这样, 只有本机可以访问了.如果要做更严格的更多的网络安全限制, 就需要依赖操作系统的 iptables。
replication: 用于指定主从同步复制. slaveof.ip, slaveof.port 表示, 本台 SSDB 服务器将从这个目标机上同步数据(也即这个配置文件对应的服务器是 slave). 你可以参考 ssdb_slave.conf 的配制。
logger: 配置日志记录. level 是日志的级别, 可以是 trace|debug|info|error. output 是日志文件的名字, SSDB 支持日志轮转, 在日志文件达到一定大小后, 将 log.txt 改名, 然后创建一个新的 log.txt。
leveldb: 配置 LevelDB 的参数. 你一般想要修改的是 cache_size 参数, 用于指定缓存大小. 适当的缓存可以提高读性能, 但是过大的缓存会影响写性能。
关于主-从、主-主及多主的配置请参考:http://ssdb.io/docs/zh_cn/replication.html
2.启动服务
启动:./ssdb-server -d ssdb.conf
关闭:./ssdb-server ssdb.conf -s stop
ssdb-server命令说明:
- ./ssdb-server -h
- ssdb-server 1.9.0
- Copyright (c) 2012-2015 ssdb.io
- Usage:
- ./ssdb-server [-d] /path/to/ssdb.conf [-s start|stop|restart]
- Options:
- -d run as daemon
- -s option to start|stop|restart the server
- -h show this message
三、ssdb客户端工具使用
- ./ssdb-cli -h 192.168.36.189 -p 8888
- ssdb 192.168.36.189:8888> set key abc
- ok
- (0.002 sec)
- ssdb 192.168.36.189:8888> get key
- abc
- (0.001 sec)
测试一下分别在两台机器添加数据,都可以正常同步。
ssdb-cli命令说明:
- ssdb 192.168.36.189:8888> help
- # display ssdb-server status
- info
- # escape/do not escape response data
- : escape yes|no
- # export/import
- export [-i] out_file
- -i interactive mode
- import in_file
- see http://ssdb.io/docs/php/ for commands details
info:返回状态消息
escape:对命令返回数据进行编码
export/import:导入导出数据
四、ssdb服务监控
info 命令返回的信息
- ssdb 192.168.36.189:8888> info
- version
- 1.9.0
- links
- 1
- total_calls
- 6
- dbsize
- 0
- binlogs
- capacity : 10000000
- min_seq : 0
- max_seq : 2
- replication
- client 192.168.36.54:55472
- type : mirror
- status : SYNC
- last_seq : 2
- replication
- slaveof 192.168.36.54:8888
- id : svc_1
- type : mirror
- status : SYNC
- last_seq : 2
- copy_count : 0
- sync_count : 1
- serv_key_range
- kv : "" - ""
- hash: "" - ""
- zset: "" - ""
- list: "" - ""
- data_key_range
- kv : "key" - "xxx"
- hash: "" - ""
- zset: "" - ""
- list: "" - ""
- leveldb.stats
- Compactions
- Level Files Size(MB) Time(sec) Read(MB) Write(MB)
- --------------------------------------------------
- 21 result(s) (0.002 sec)
1.binlogs
当前实例的写操作状态.
capacity: binlog 队列的最大长度
min_seq: 当前队列中的最小 binlog 序号
max_seq: 当前队列中的最大 binlog 序号
2.replication
可以有多条 replication 记录. 每一条表示一个连接进来的 slave(client), 或者一个当前服务器所连接的 master(slaveof).
slaveof|client ip:port, 远端 master/slave 的 ip:port。
type: 类型, sync|mirror.
status: 当前同步状态, DISCONNECTED|INIT|OUT_OF_SYNC|COPY|SYNC。
last_seq: 上一条发送或者收到的 binlog 的序号。
slaveof.id: master 的 id(这是从 slave's 角度来看的, 你永远不需要在 master 上配置它自己的 id)。
slaveof.copy_count: 在全量同步时, 已经复制的 key 的数量。
slaveof.sync_count: 发送或者收到的 binlog 的数量。
3.关于 status:
DISCONNECTED: 与 master 断开了连接, 一般是网络中断。
INIT: 初始化状态。
OUT_OF_SYNC: 由于短时间内在 master 有大量写操作, 导致 binlog 队列淘汰, slave 丢失同步点, 只好重新复制全部的数据。
COPY: 正在复制基准数据的过程中, 新的写操作可能无法及时地同步。
SYNC: 同步状态是健康的.
4.判断同步状态
binlogs.max_seq 是指当前实例上的最新一次的写(写/更新/删除)操作的序号, replication.client.last_seq 是指已发送给 slave 的最新一条 binlog 的序号。所以, 如果你想判断主从同步是否已经同步到位(实时更新), 那么就判断 binlogs.max_seq 和 replication.client.last_seq 是否相等。
五、备份与恢复
1.备份
支持了在线备份功能, 可以在不停止服务的情况下备份服务器数据,这个功能让 SSDB 更加成为一个真正生产环境的存储服务器。
./ssdb-dump 192.168.36.189 8888 ./backup_dir
这条命令从监听在192.168.36.189:8888 的 SSDB 服务器上备份全量的数据, 保存到本地新创建的目录 backup_dir, 这个目录其实是一个 LevelDB 的数据库(db)。
2.恢复
将 backup_dir 传输到服务器, 修改新ssdb服务器的配置文件, 将 SSDB 使用的数据库名改为 backup_dir, 然后重启 SSDB 即可。
3.使用主从(Master-Slave)架构实时备份
注意:
1.一般, 建议你将 logger.level 设置为 debug 级别。详情参考:日志解读
2.利用配置文件的 deny, allow 指令限制可信的来源 IP 访问,提高服务的安全。
3.SSDB 的配置文件使用一个 TAB 来表示一级缩进, 不要使用空格来缩进, 无论你用2个, 3个, 4个, 或者无数个空格都不行!
4.一定要记得修改你的 Linux 内核参数, 关于 max open files(最大文件描述符数)的内容,详情参考:构建C1000K的服务器
参考文档:
1.SSDB入门基础
2.SSDB Redis替代品
http://blog.csdn.net/zhu_tianwei/article/details/44928887
相关推荐
SSDB-Redis是一款高效、可替代Redis的数据存储系统,它主要设计用于解决Redis在面对大数据量时可能遇到的内存不足问题。SSDB的核心优势在于其数据完全离线存储,这意味着它可以将数据保存到硬盘上,而不仅仅依赖于...
Redis和SSDB是两种常用的键值存储系统,广泛应用于数据缓存、消息队列等场景。Twemproxy,又称为Nutcracker,是一款轻量级的代理服务,用于在多台Redis或SSDB服务器之间分发请求,提高系统的可扩展性和可用性。本...
互联网分布式缓存技术 课程主讲: 互联网应用高级架构师 白贺翔涉及技术: Redis、SSDB、Memcached课程描述: 介绍互联网分布式技术的重要性、背景、应用范围;目前互联网行业使用分布 式缓存进行设计的比例,...
SSDB - Redis-compatible NoSQL database stored on disk高性能的键值(key-string、key-zset、key-hashmap)NoSQL 数据库,是 Redis 的替代品。SSDB性能稳定,已投入生产,并被包括奇虎360在内的多家互联网公司广泛...
替代 Redis 数据库, Redis 的 100 倍容量LevelDB 网络支持, 使用 C/C 开发Redis API 兼容, 支持 Redis 客户端适合存储集合数据, 如 list, hash, zset...客户端 API 支持的语言包括: C , PHP, Python, Java, Go ...
**SSDB介绍** SSDB设计灵感来源于Redis,但相对于Redis,SSDB在某些方面更具优势。SSDB支持更大的数据集,其设计目标是处理数十亿级别的键值对。此外,SSDB在持久化、复制和集群方面也具有良好的性能和稳定性。SSDB...
用redis替代session改写thinkPHP验证码类,可以用于实现API接口。
Redis 使用教程详解 Redis 是一个高性能的 NoSQL 键值存储数据库,广泛应用于缓存、任务列表、网站访问统计数据、过期处理、应用排行榜、分布式集群架构中的 session 分离等领域。下面是 Redis 的详细使用教程。 ...
### Redis安装及使用详解 #### 一、Redis简介 Redis是一种高性能的键值对存储系统,采用内存存储机制,能够实现快速的数据访问速度。它支持多种数据结构,包括字符串(Strings)、散列(Hashes)、列表(Lists)、...
ppt格式的redis介绍,包括redis的原理,机制使用方法
本文将详细介绍阿里巴巴28条Redis使用规范,涵盖了Redis性能优化、数据存储、安全、实例管理等方面的内容。 规范一:控制key的长度 为了避免Redis中的keys过长,阿里巴巴建议控制key的长度,尽量将String类型的数据...
本系列将和大家分享Redis分布式缓存,本章主要简单介绍下Redis中的String类型,以及如何使用Redis解决订单秒杀超卖问题。 Redis中5种数据结构之String类型:key-value的缓存,支持过期,value不超过512M。 Redis是...
Redis基础教程及开发案例及解析Redis基础教程及开发案例及解析Redis基础教程及开发案例及解析Redis基础教程及开发案例及解析Redis基础教程及开发案例及解析Redis基础教程及开发案例及解析Redis基础教程及开发案例及...
Redis是一种开源的高性能键值对存储数据库,它支持数据的网络访问、基于内存的数据处理方式,并且以NoSQL的形式出现。...通过上述介绍,希望使用者能够对Redis有一个基本的了解,并能够开始尝试安装和使用它。
在这篇文章中,我们将详细介绍如何在Windows平台下编译Redis++,包括编译hiredis.lib和Win32_Interop.lib静态库文件的过程,然后安装Cmake并编译Redis++,最后进行lib测试验证。 首先,我们需要了解Redis++的组件...
SSDB,即Simple Scalable Database,是一个高性能的Key-Value数据库,设计目标是对Redis的一种平价替代。SSDB支持多种数据类型,包括字符串、哈希表、列表、排序集等,同时提供了类似Redis的命令接口。SSDB在持久化...
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 附件里面包括redis源码,phpredis源码,redis指令及文档
Redis是一种开源的、使用ANSI C语言编写的、支持网络、基于内存、可选持久性的键值对存储数据库。它最初由 Salvatore Sanfilippo 编写,其缩写来自于REmote DIctionary Server。Redis提供了键值存储、键值列表、有序...
本资料将详细介绍Redis的程序及其使用方法。 首先,Redis的核心特性包括: 1. **内存存储**:Redis的所有数据都存储在内存中,这使得其读写速度极快,但同时也会消耗大量内存资源。 2. **持久化**:为了防止数据...
本文将介绍如何在 Windows 上安装、配置和使用 Redis。 1. 下载 Redis for Windows 访问 Redis 官方网站(https://redis.io/)或 Github 仓库(https://github.com/microsoftarchive/redis)下载适用于 Windows 的...