`
m635674608
  • 浏览: 5061510 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Redis 替代品SSDB介绍及使用

 
阅读更多

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 缩进来表示层级关系. 以 '#' 号开始的行是注释。

 

 

 

  1. # ssdb-server config  
  2. # MUST indent by TAB!  
  3.   
  4. # relative to path of this file, directory must exists  
  5. work_dir = ./var  
  6. pidfile = ./var/ssdb.pid  
  7.   
  8. server:  
  9.         ip: 192.168.36.54  
  10.         port: 8888  
  11.         # bind to public ip  
  12.         #ip: 0.0.0.0  
  13.         # format: allow|deny: all|ip_prefix  
  14.         # multiple allows or denys is supported  
  15.         #deny: all  
  16.         #allow: 127.0.0.1  
  17.         #allow: 192.168  
  18.         # auth password must be at least 32 characters  
  19.         #auth: very-strong-password  
  20.   
  21. replication:  
  22.         binlog: yes  
  23.         # Limit sync speed to *MB/s, -1: no limit  
  24.         sync_speed: -1  
  25.         slaveof:  
  26.                 # to identify a master even if it moved(ip, port changed)  
  27.                 # if set to empty or not defined, ip:port will be used.  
  28.                 id: svc_1  
  29.                 # sync|mirror, default is sync  
  30.                 type: mirror  
  31.                 ip: 192.168.36.189  
  32.                 port: 8888  
  33.   
  34. logger:  
  35.         level: debug  
  36.         output: log.txt  
  37.         rotate:  
  38.                 size: 1000000000  
  39.   
  40. leveldb:  
  41.         # in MB  
  42.         cache_size: 500  
  43.         # in KB  
  44.         block_size: 32  
  45.         # in MB  
  46.         write_buffer_size: 64  
  47.         # in MB  
  48.         compaction_speed: 1000  
  49.         # yes|no  
  50.         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命令说明:

 

 

 

  1.  ./ssdb-server -h  
  2. ssdb-server 1.9.0  
  3. Copyright (c) 2012-2015 ssdb.io  
  4.   
  5. Usage:  
  6.     ./ssdb-server [-d] /path/to/ssdb.conf [-s start|stop|restart]  
  7. Options:  
  8.     -d    run as daemon  
  9.     -s    option to start|stop|restart the server  
  10.     -h    show this message  

三、ssdb客户端工具使用

  1. ./ssdb-cli -h 192.168.36.189 -p 8888  
  2. ssdb 192.168.36.189:8888> set key abc  
  3. ok  
  4. (0.002 sec)  
  5. ssdb 192.168.36.189:8888> get key  
  6. abc  
  7. (0.001 sec)  

测试一下分别在两台机器添加数据,都可以正常同步。

ssdb-cli命令说明:

 

 

 

  1. ssdb 192.168.36.189:8888> help  
  2.   
  3. # display ssdb-server status  
  4.         info  
  5. # escape/do not escape response data  
  6.         : escape yes|no  
  7. # export/import  
  8.         export [-i] out_file  
  9.                 -i      interactive mode  
  10.         import in_file  
  11.   
  12. see http://ssdb.io/docs/php/ for commands details  

info:返回状态消息

escape:对命令返回数据进行编码

 

export/import:导入导出数据

 

四、ssdb服务监控

 

info 命令返回的信息

 

 

 

  1. ssdb 192.168.36.189:8888> info  
  2. version  
  3.         1.9.0  
  4. links  
  5.         1  
  6. total_calls  
  7.         6  
  8. dbsize  
  9.         0  
  10. binlogs  
  11.             capacity : 10000000  
  12.             min_seq  : 0  
  13.             max_seq  : 2  
  14. replication  
  15.         client 192.168.36.54:55472  
  16.             type     : mirror  
  17.             status   : SYNC  
  18.             last_seq : 2  
  19. replication  
  20.         slaveof 192.168.36.54:8888  
  21.             id         : svc_1  
  22.             type       : mirror  
  23.             status     : SYNC  
  24.             last_seq   : 2  
  25.             copy_count : 0  
  26.             sync_count : 1  
  27. serv_key_range  
  28.             kv  : "" - ""  
  29.             hash: "" - ""  
  30.             zset: "" - ""  
  31.             list: "" - ""  
  32. data_key_range  
  33.             kv  : "key" - "xxx"  
  34.             hash: "" - ""  
  35.             zset: "" - ""  
  36.             list: "" - ""  
  37. leveldb.stats  
  38.                                        Compactions  
  39.         Level  Files Size(MB) Time(sec) Read(MB) Write(MB)  
  40.         --------------------------------------------------  
  41.   
  42. 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

    SSDB-Redis是一款高效、可替代Redis的数据存储系统,它主要设计用于解决Redis在面对大数据量时可能遇到的内存不足问题。SSDB的核心优势在于其数据完全离线存储,这意味着它可以将数据保存到硬盘上,而不仅仅依赖于...

    第三章 Redis/SSDB+Twemproxy安装与使用

    Redis和SSDB是两种常用的键值存储系统,广泛应用于数据缓存、消息队列等场景。Twemproxy,又称为Nutcracker,是一款轻量级的代理服务,用于在多台Redis或SSDB服务器之间分发请求,提高系统的可扩展性和可用性。本...

    互联网分布式缓存技术(redis、memcached、ssdb)

    互联网分布式缓存技术 课程主讲: 互联网应用高级架构师 白贺翔涉及技术: Redis、SSDB、Memcached课程描述: 介绍互联网分布式技术的重要性、背景、应用范围;目前互联网行业使用分布 式缓存进行设计的比例,...

    SSDB - 快速 NoSQL 数据库,Redis 的替代品.zip

    SSDB - Redis-compatible NoSQL database stored on disk高性能的键值(key-string、key-zset、key-hashmap)NoSQL 数据库,是 Redis 的替代品。SSDB性能稳定,已投入生产,并被包括奇虎360在内的多家互联网公司广泛...

    性能超越Redis的NoSQL数据库SSDB.zip

    替代 Redis 数据库, Redis 的 100 倍容量LevelDB 网络支持, 使用 C/C 开发Redis API 兼容, 支持 Redis 客户端适合存储集合数据, 如 list, hash, zset...客户端 API 支持的语言包括: C , PHP, Python, Java, Go ...

    Python-ssdbya又一个ssdb的Python客户端用来替代Redis的NoSQL数据库

    **SSDB介绍** SSDB设计灵感来源于Redis,但相对于Redis,SSDB在某些方面更具优势。SSDB支持更大的数据集,其设计目标是处理数十亿级别的键值对。此外,SSDB在持久化、复制和集群方面也具有良好的性能和稳定性。SSDB...

    用redis替代session改写thinkPHP验证码类

    用redis替代session改写thinkPHP验证码类,可以用于实现API接口。

    Redis使用教程,详解

    Redis 使用教程详解 Redis 是一个高性能的 NoSQL 键值存储数据库,广泛应用于缓存、任务列表、网站访问统计数据、过期处理、应用排行榜、分布式集群架构中的 session 分离等领域。下面是 Redis 的详细使用教程。 ...

    redis安装及使用

    ### Redis安装及使用详解 #### 一、Redis简介 Redis是一种高性能的键值对存储系统,采用内存存储机制,能够实现快速的数据访问速度。它支持多种数据结构,包括字符串(Strings)、散列(Hashes)、列表(Lists)、...

    redis介绍,ppt介绍

    ppt格式的redis介绍,包括redis的原理,机制使用方法

    阿里巴巴Redis使用规范

    本文将详细介绍阿里巴巴28条Redis使用规范,涵盖了Redis性能优化、数据存储、安全、实例管理等方面的内容。 规范一:控制key的长度 为了避免Redis中的keys过长,阿里巴巴建议控制key的长度,尽量将String类型的数据...

    Redis中的String类型及使用Redis解决订单秒杀超卖问题

    本系列将和大家分享Redis分布式缓存,本章主要简单介绍下Redis中的String类型,以及如何使用Redis解决订单秒杀超卖问题。 Redis中5种数据结构之String类型:key-value的缓存,支持过期,value不超过512M。 Redis是...

    【Redis基础教程及开发案例及解析】Redis基础教程及开发案例及解析

    Redis基础教程及开发案例及解析Redis基础教程及开发案例及解析Redis基础教程及开发案例及解析Redis基础教程及开发案例及解析Redis基础教程及开发案例及解析Redis基础教程及开发案例及解析Redis基础教程及开发案例及...

    Redis介绍的课件

    Redis是一种开源的高性能键值对存储数据库,它支持数据的网络访问、基于内存的数据处理方式,并且以NoSQL的形式出现。...通过上述介绍,希望使用者能够对Redis有一个基本的了解,并能够开始尝试安装和使用它。

    redis++使用说明,windows下编译redis-plus-plus

    在这篇文章中,我们将详细介绍如何在Windows平台下编译Redis++,包括编译hiredis.lib和Win32_Interop.lib静态库文件的过程,然后安装Cmake并编译Redis++,最后进行lib测试验证。 首先,我们需要了解Redis++的组件...

    redis-admin-web:redis, ssdb 管理页面

    SSDB,即Simple Scalable Database,是一个高性能的Key-Value数据库,设计目标是对Redis的一种平价替代。SSDB支持多种数据类型,包括字符串、哈希表、列表、排序集等,同时提供了类似Redis的命令接口。SSDB在持久化...

    redis/phpredis源码及文档

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 附件里面包括redis源码,phpredis源码,redis指令及文档

    Redis介绍及实践分享.

    Redis是一种开源的、使用ANSI C语言编写的、支持网络、基于内存、可选持久性的键值对存储数据库。它最初由 Salvatore Sanfilippo 编写,其缩写来自于REmote DIctionary Server。Redis提供了键值存储、键值列表、有序...

    redis程序及使用说明

    本资料将详细介绍Redis的程序及其使用方法。 首先,Redis的核心特性包括: 1. **内存存储**:Redis的所有数据都存储在内存中,这使得其读写速度极快,但同时也会消耗大量内存资源。 2. **持久化**:为了防止数据...

    redis windows版本安装包及使用说明

    本文将介绍如何在 Windows 上安装、配置和使用 Redis。 1. 下载 Redis for Windows 访问 Redis 官方网站(https://redis.io/)或 Github 仓库(https://github.com/microsoftarchive/redis)下载适用于 Windows 的...

Global site tag (gtag.js) - Google Analytics