從 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的客戶端, 你可能需要下面的命令對照表.

#鍵值

##RedisSSDB##getgetsetset#setexsetx(只適用於kv類型)deldel#incr/incrByincr##decr/decrBydecr#mget/getMultiplemulti_get####ttl過期getbit############setbit## ## ##設定位元######
setMultiplemulti_set
#del(multiple)multi_del
##keys(僅適用於kv 類型)
getsetgetset
setnx#setnx
存在存在
#ttlttl
#過期
getbit
bitcountredis_bitcount, countbit
#strlenstrlen
getrange取得範圍

請非常細心地閱讀這裡的說明:

  • 對於Redis, substr 命令早已經被廢棄, 所以你不要使用 substr 命令在Redis 用戶端(當然, 你可以這麼做, 但你必須不這麼做)
  • 如果你還想著Redis, 那麼就用 getrange 命令
  • 注意這兩者的區別: substr(start, size)getrange(start, end)
  • 當size 是負數時, 如果你不熟悉PHP 語言, 那麼你會覺得有些奇怪
  • SSDB 的 substr 指令的說明這 這裡
  • #
##鍵映射(雜湊)

#RedisSSDB#del(
不支援)hclear
hget#hget
hsethset
hdel、hmdelhdel、multi_hdel
hIncrByhincr
#hDecrByhdecr
hKeyshkeys
hValshscan
hMGetmulti_hget
hMSetmulti_hset
hLenhsize
hExistshexists
keyshlist(僅適用於雜湊類型)
#

如果你想刪除整個hash, 那麼你就必須使用SSDB 的客戶端來執行 hclear 指令, 用Redis 的客戶端是刪除不了整個hash 的.

##Key-Zset

##Redisdel(# ##不支持###)# zRevRangezRangeByScorezRevRangeByScore######zrscan##### ##########zIncrBy######zincr#############zDecrBy######zdecr############# zCount######zcount#########zCardzsizezRankzrankzRemRangeByRank#zremrangebyrankzRemRangeByScorezremrangebyscorekeyszlist(僅適用於zset 類型)#

如果你想刪除整個zset, 那麼你就必須使用SSDB 的客戶端來執行 zclear 指令, 用Redis 的客戶端是刪除不了整個zset 的.

#Key-List(佇列)

SSDB
zclear
zScorezget
zAddzset
zRemzdel
#zRangezrange
zrrange
zscan
zSumzsum
zAvgzavg
##qpop_front#rpopqpop_backlrangeqslicelindex, lget
#RedisSSDB
del(不支援)qclear
llen/lsizeqsize
lpush#qpush_front
rpushqpush_back
#lpop
####### #qget############lset######qset#############keys######qlist(僅適用於佇列/清單類型) ############

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