从 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 工具的支持

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

SSDB 和 Redis 命令对照表

SSDB 支持 Redis 协议和客户端, 所以你可以使用 Redis 的客户端来连接 SSDB 进行操作.

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

键值

RedisSSDB
getget
setset
setex setx(仅适用于kv类型)
del del
incr/incrByincr
decr/decrBydecr
mget/getMultiplemulti_get
setMultiplemulti_set
del(多个)multi_del
keyskeys(仅适用于kv类型)
getsetgetset
setnxsetnx
存在存在
ttlttl
过期过期
getbitgetbit
setbit 设置位
bitcountredis_bitcount,countbit
strlenstrlen
getrangegetrange

请非常细心地阅读此处的说明:

  • 对于 Redis, substr 命令早已经被废弃, 所以你不要使用 substr 命令在 Redis 客户端(当然, 你可以这么做, 但你必须不这么做)substr 命令早已经被废弃, 所以你不要使用 substr 命令在 Redis 客户端(当然, 你可以这么做, 但你必须不这么做)
  • 如果你还想着 Redis, 那么就用 getrange 命令
  • 注意这两者的区别: substr(start, size)getrange(start, end)
  • 当 size 是负数时, 如果你不熟悉 PHP 语言, 那么你会觉得有些奇怪
  • SSDB 的 substr如果你还想着 Redis, 那么就用 getrange 命令
  • 注意这两者的区别: substr(start, size)getrange(start, end)🎜🎜当 size 是负数时, 如果你不熟悉 PHP 语言, 那么你会觉得有些奇怪🎜🎜SSDB 的 substr 命令的描述这 🎜这里🎜🎜

键映射(哈希)

RedisSSDB
del(不支持)hclear
hgethget
hsethset
hdel, hmdelhdel, multi_hdel
hIn crByhincr
hDecrByhdecr
hKeyshkeys
hValshscan
hMGetmulti_hget
hMSetmulti_hset
hLenhsize
hExistshexists
keyshlist(仅适用于哈希类型)

如果你想删除整个 hash, 那么你就必须使用 SSDB 的客户端来执行 hclear 命令, 用 Redis 的客户端是删除不了整个 hash 的.

Key-Zset

RedisSSDB
del(不支持)zclear
z分数zget
z添加zset
zRemzdel
z范围 zrange
zRevRangezrrange
zRangeByScore zscan
zRevRangeByScorezrscan
zIncrByzincr
zDecrByzdecr
z数数z数数
zSumzsum
zAvgzavg
z卡片z大小
z排名zrank
zRemRangeByRankzremrangebyrank
zRemRangeByScorezremrangebyscore
zlist(仅适用于 zset 类型)

如果你想删除整个 zset, 那么你就必须使用 SSDB 的客户端来执行 zclear 命令, 用 Redis 的客户端是删除不了整个 zset 的.

键列表(队列)

RedisSSDB
del(不支持)qclear
llen/lsizeqsize
lpushqpush_front
rpushqpush_back
l流行qpop_front
rpopqpop_back
lrangeqslice
lindex, lgetqget
lsetqset
keysqlist(仅适用于队列/列表类型)

如果你想删除整个 list, 那么你就必须使用 SSDB 的客户端来执行 qclear 命令, 用 Redis 的客户端是删除不了整个 list 的.