从 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 的客户端, 你可能需要下面的命令对照表.
Key-Value
Redis | SSDB |
---|---|
get | get |
set | set |
setex | setx(for kv type only) |
del | del |
incr/incrBy | incr |
decr/decrBy | decr |
mget/getMultiple | multi_get |
setMultiple | multi_set |
del(multiple) | multi_del |
keys | keys(for kv type only) |
getset | getset |
setnx | setnx |
exists | exists |
ttl | ttl |
expire | expire |
getbit | getbit |
setbit | setbit |
bitcount | redis_bitcount, countbit |
strlen | strlen |
getrange | getrange |
请非常细心地阅读此处的说明:
- 对于 Redis,
substr
命令早已经被废弃, 所以你不要使用substr
命令在 Redis 客户端(当然, 你可以这么做, 但你必须不这么做) - 如果你还想着 Redis, 那么就用
getrange
命令 - 注意这两者的区别:
substr(start, size)
,getrange(start, end)
- 当 size 是负数时, 如果你不熟悉 PHP 语言, 那么你会觉得有些奇怪
- SSDB 的
substr
命令的描述这 这里
Key-Map(Hash)
Redis | SSDB |
---|---|
del(not supported) | 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(for hash type only) |
如果你想删除整个 hash, 那么你就必须使用 SSDB 的客户端来执行 hclear
命令, 用 Redis 的客户端是删除不了整个 hash 的.
Key-Zset
Redis | SSDB |
---|---|
del(not supported) | zclear |
zScore | zget |
zAdd | zset |
zRem | zdel |
zRange | zrange |
zRevRange | zrrange |
zRangeByScore | zscan |
zRevRangeByScore | zrscan |
zIncrBy | zincr |
zDecrBy | zdecr |
zCount | zcount |
zSum | zsum |
zAvg | zavg |
zCard | zsize |
zRank | zrank |
zRemRangeByRank | zremrangebyrank |
zRemRangeByScore | zremrangebyscore |
keys | zlist(for zset type only) |
如果你想删除整个 zset, 那么你就必须使用 SSDB 的客户端来执行 zclear
命令, 用 Redis 的客户端是删除不了整个 zset 的.
Key-List(Queue)
Redis | SSDB |
---|---|
del(not supported) | qclear |
llen/lsize | qsize |
lpush | qpush_front |
rpush | qpush_back |
lpop | qpop_front |
rpop | qpop_back |
lrange | qslice |
lindex, lget | qget |
lset | qset |
keys | qlist(for queue/list type only) |
如果你想删除整个 list, 那么你就必须使用 SSDB 的客户端来执行 qclear
命令, 用 Redis 的客户端是删除不了整个 list 的.