SSDB 是一個使用 C/C++ 語言開發的高性能 NoSQL 數據庫, 支持 KV, list, map(hash), zset(sorted set) 等數據結構, 用來替代或者與 Redis 配合存儲十億級別列表的數據。實現上其使用了 Google 的 LevelDB作為存儲引擎,SSDB 不會像 Redis 一樣狂吃內存,而是將大部分數據存儲到磁盤上。最重要的是,SSDB採用了New BSD License 開源協議進行了開源,目前已經在許多互聯網公司得到廣泛使用, 如奇虎 360, TOPGAME等。其有以下幾個特點:
替代 Redis 數據庫, Redis 的 100 倍容量
LevelDB 網絡支持, 使用 C/C++ 開發
Redis API 兼容, 支持 Redis 客戶端
適合存儲集合數據, 如 list, hash, zset...
客戶端 API 支持的語言包括: C++, PHP, Python, Java, Go
持久化的隊列服務
主從複製, 負載均衡
擁有GUI管理工具(phpssdbadmin)
從上面可以看到,SSDB使用了 LevelDB Storage引擎來讀寫內存或磁盤中的數據,正因為部分數據被持久化到磁盤,所有其可以存儲比 Redis 多很多的數據。
性能:
SSDB官方提供了其和 Redis 的QPS性能對比的基準測試,包括了 set\get 操作的測試,並且在不同的併發進行了對比。
從圖中可以看出,不同併發的 SSDB set 操作其性能均比 Redis 稍微差了一點,但是 get 操作要比 Redis 好。
使用:
SSDB的安裝和使用都非常地簡單,並且官方還提供了 C++, PHP, Java, Go等語言的客戶端 API 文檔,但是隻有PHP的文檔最全,具體文檔地址參見:http://ssdb.io/docs/zh_cn/php/index.html
從Redis遷移到SSDB:
官方提供了一個工具將 Redis 中的數據遷移到 SSDB,使用如下:
各參數的含義:
redis_port: Redis 監聽的端口
redis_host: Redis 運行所在的 IP 或者主機名
redis_db: Redis 的 DB 編號
ssdb_host: SSDB 運行所在的 IP 或者主機名
ssdb_port: SSDB 監聽的端口
更多的關於 SSDB 和 Redis 的兼容問題可以參見:http://ssdb.io/docs/zh_cn/redis-to-ssdb.html