從 Redis 遷移到 SSDB

2019-02-18 14:37 更新

工具

在 tools 目錄中的 redis-import.php PHP 腳本可以用來將 Redis 服務器上的數(shù)據(jù), 拷貝到 SSDB 服務器上.

用法:

php redis-import.php redis_host redis_port redis_db ssdb_host ssdb_port

參數(shù):

  • redis_host: Redis 運行所在的 IP 或者主機名
  • redis_port: Redis 監(jiān)聽的端口
  • redis_db: Redis 的 DB 編號
  • ssdb_host: SSDB 運行所在的 IP 或者主機名
  • ssdb_port: SSDB 監(jiān)聽的端口

請確保你的 PHP Redis 模塊 https://github.com/nicolasff/phpredis 已經安裝.

Redis 工具的支持

ToolSupported
redis-cli支持
Twemproxy支持
Sentinel不支持

SSDB 和 Redis 命令對照表

SSDB 支持 Redis 協(xié)議和客戶端, 所以你可以使用 Redis 的客戶端來連接 SSDB 進行操作.

但是, 如果你想使用 SSDB 的客戶端, 你可能需要下面的命令對照表.

Key-Value

RedisSSDB
getget
setset
setexsetx(for kv type only)
deldel
incr/incrByincr
decr/decrBydecr
mget/getMultiplemulti_get
setMultiplemulti_set
del(multiple)multi_del
keyskeys(for kv type only)
getsetgetset
setnxsetnx
existsexists
ttlttl
expireexpire
getbitgetbit
setbitsetbit
bitcountredis_bitcount, countbit
strlenstrlen
getrangegetrange

請非常細心地閱讀此處的說明:

  • 對于 Redis, substr 命令早已經被廢棄, 所以你不要使用 substr 命令在 Redis 客戶端(當然, 你可以這么做, 但你必須不這么做)
  • 如果你還想著 Redis, 那么就用 getrange 命令
  • 注意這兩者的區(qū)別: substr(start, size)getrange(start, end)
  • 當 size 是負數(shù)時, 如果你不熟悉 PHP 語言, 那么你會覺得有些奇怪
  • SSDB 的 substr 命令的描述這 這里

Key-Map(Hash)

RedisSSDB
del(not supported)hclear
hgethget
hsethset
hdel, hmdelhdel, multi_hdel
hIncrByhincr
hDecrByhdecr
hKeyshkeys
hValshscan
hMGetmulti_hget
hMSetmulti_hset
hLenhsize
hExistshexists
keyshlist(for hash type only)

如果你想刪除整個 hash, 那么你就必須使用 SSDB 的客戶端來執(zhí)行 hclear 命令, 用 Redis 的客戶端是刪除不了整個 hash 的.

Key-Zset

RedisSSDB
del(not supported)zclear
zScorezget
zAddzset
zRemzdel
zRangezrange
zRevRangezrrange
zRangeByScorezscan
zRevRangeByScorezrscan
zIncrByzincr
zDecrByzdecr
zCountzcount
zSumzsum
zAvgzavg
zCardzsize
zRankzrank
zRemRangeByRankzremrangebyrank
zRemRangeByScorezremrangebyscore
keyszlist(for zset type only)

如果你想刪除整個 zset, 那么你就必須使用 SSDB 的客戶端來執(zhí)行 zclear 命令, 用 Redis 的客戶端是刪除不了整個 zset 的.

Key-List(Queue)

RedisSSDB
del(not supported)qclear
llen/lsizeqsize
lpushqpush_front
rpushqpush_back
lpopqpop_front
rpopqpop_back
lrangeqslice
lindex, lgetqget
lsetqset
keysqlist(for queue/list type only)

如果你想刪除整個 list, 那么你就必須使用 SSDB 的客戶端來執(zhí)行 qclear 命令, 用 Redis 的客戶端是刪除不了整個 list 的.

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號