從 Redis 遷移到 SSDB
工具
在 tools
目錄中的 redis-import.php
PHP 腳本可以用來將Redis 伺服器上的資料, 拷貝到SSDB 伺服器上.
用法:
php redis-import.php redis_host redis_port redis_db ssdb_host ssdb_port
參數:
- redis_host: Redis運作所在的IP 或主機名稱
- redis_port: Redis 監聽的連接埠
- redis_db: Redis 的DB 編號
- ssdb_host: SSDB 運作所在的IP 或主機名稱
- ssdb_port: SSDB 監聽的連接埠
請確保你的PHP Redis 模組 https://github.com/nicolasff/phpredis 已經安裝.
#Redis 工具的支援
Tool | #Supported |
---|---|
redis- cli | 支援 |
Twemproxy | 支援 |
Sentinel | 不支援 |
SSDB 和Redis 指令對照表
SSDB 支援Redis 協定和客戶端, 所以你可以使用Redis 的客戶端來連接SSDB 進行操作.
但是, 如果你想使用SSDB的客戶端, 你可能需要下面的命令對照表.
#鍵值
SSDB | |
---|---|
get | |
set | |
setx(只適用於kv類型) | |
del | |
incr | |
decr | |
multi_get | ## |
setMultiple | multi_set |
#del(multiple) | multi_del |
##keys(僅適用於kv 類型) | |
getset | getset |
setnx | #setnx |
存在 | 存在 |
#ttl | ttl |
#過期 | |
getbit | |
bitcount | redis_bitcount, countbit |
#strlen | strlen |
getrange | 取得範圍 |
請非常細心地閱讀這裡的說明:
- 對於Redis,
substr
命令早已經被廢棄, 所以你不要使用substr
命令在Redis 用戶端(當然, 你可以這麼做, 但你必須不這麼做) - 如果你還想著Redis, 那麼就用
getrange
命令 - 注意這兩者的區別:
substr(start, size)
,getrange(start, end)
- 當size 是負數時, 如果你不熟悉PHP 語言, 那麼你會覺得有些奇怪
- SSDB 的
substr
指令的說明這 這裡 #
SSDB | |
---|---|
不支援) | hclear |
hget | #hget |
hset | hset |
hdel、hmdel | hdel、multi_hdel |
hIncrBy | hincr |
#hDecrBy | hdecr |
hKeys | hkeys |
hVals | hscan |
hMGet | multi_hget |
hMSet | multi_hset |
hLen | hsize |
hExists | hexists |
keys | hlist(僅適用於雜湊類型) |
如果你想刪除整個hash, 那麼你就必須使用SSDB 的客戶端來執行 hclear
指令, 用Redis 的客戶端是刪除不了整個hash 的.
SSDB | zclear |
---|---|
zScore | zget |
zAdd | zset |
zRem | zdel |
#zRange | zrange |
zrrange | |
zscan | |
zSum | zsum |
zAvg | zavg |
zsize | |
zrank | |
#zremrangebyrank | |
zremrangebyscore | |
zlist(僅適用於zset 類型) |
#Redis | SSDB |
---|---|
del(不支援) | qclear |
llen/lsize | qsize |
lpush | #qpush_front |
rpush | qpush_back |
#lpop | ##qpop_front|
qpop_back | |
qslice | |
如果你想刪除整個list, 那麼你就必須使用SSDB 的客戶端來執行 qclear
命令, 用Redis 的客戶端是刪除不了整個list 的.