相关文章

更多

最近更新

更多

Redis 数据迁移到 SSDB

2019-05-03 22:06|来源: 网路

工具

在 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 的.


相关问答

更多
  • 清空数据库:打开redis-client.exe,输入命令flushdb redis自带持久化,因此是不会因为掉电而丢失所有内容的。默认情况下,redis每隔一定时间间隔会对数据库做一次内存快照,记录数据库此刻的内容;启动服务器时会自动加载内存快照。 你可以打开edis文件夹里.rdb文件看看。
  • 优点:SSDB 对内存的需求小,是个较便宜的方案。 不差钱的话,Redis 在性能、稳定性和社区上都更加优秀 缺点:SSDB 实现很低效,主要是依赖 leveldb 会按 key 来排序的特性 Redis 测试时数据量小,只读写了内存的可能性
  • 额,说一下个人意见:mongodb,一般用来存储比较大的数据,一般都是实时的,缓存成html没多大意义 memacahe 确实是缓存到内存的,但是不是一直在内存中,会通过机制存储到磁盘中,生成一个文档,可是设置隔多少时间存储一次
  • 可以使用一些/etc/security/console.apps/目录下为用户配置的程序. 这个目录中包括允许控制台用户使用/sbin和/usr/sbin中的某些应用程序的配置文件. 这些配置文件和它们所设置的应用程序享有相同名称. 控制台用户可以使用的一组重要应用程序程序包括三个可以用来关闭或重新启动系统的程序: /sbin/halt /sbin/reboot /sbin/poweroff 因为这些都是支持PAM的应用程序,因此需要时都可以调用pam_console.so 模块.
  • MemoryCache被嵌入进程中,因此只能用作该进程的普通键值存储。 MemoryCache的单独服务器对应的将被memcached 。 尽管redis是一种可以在其他服务器上托管的数据结构服务器,可以像memcached一样通过网络进行交互,但redis支持一系列复杂的数据类型和操作,以提供逻辑和智能缓存。 MemoryCache is embedded in the process , hence can only be used as a plain key-value store from tha ...
  • 假设从memcached迁移到redis以进行缓存,你已经做的很简单,我只需要重新启动才能保持简单。 在redis持久性是可选的,所以你可以使用它很像memcached,如果这是你想要的。 您甚至可能会发现使缓存持久化对于在重新启动后避免大量高速缓存未命中是有用的。 有效期也可用 - 该算法与memcached有点不同,但对于大多数用途来说,这不足以满足要求 - 有关详细信息,请参阅http://redis.io/commands/expire 。 Assuming that migrating from ...
  • 你在使用Redis的官方形象吗? https://hub.docker.com/_/redis/ 用于redis的Dockefile:3.2.0-alpine发布 它有一个声明的卷: .. VOLUME /data WORKDIR /data .. 卷在文档中描述。 简而言之,作者正在做的是配置Redis以将数据存储在将由docker引擎维护的外部磁盘卷上。 这不仅更高效,还允许用户使用它将数据与容器分开。 练习图像的快照将不包含任何数据(如果您考虑它,这是一件好事)。 一旦理解了这些概念,就可以更清楚地 ...
  • 我建议你看看redis-rdb-tools从Redis中提取数据。 此包可以将Redis数据库的内容转储为JSON文件。 然后,您可以使用Amazon提供的任何加载程序工具来提供其数据库(或编写您自己的数据库)。 例如,AWS命令行界面支持使用JSON提供DynamoDB: http ://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.CLI.html http://docs.aws.amazon.com/cli /latest ...
  • 好吧,经过一天的黑客攻击后,下面是我想到的: class MoveActiveRecordSesionsIntoRedis < ActiveRecord::Migration def up #get all the sessions from the last month old_sessions = ActiveRecord::Base.connection.select_all("select * from sessions where updated_at > '#{Time.no ...
  • 因为它们通常是在Linux / OSX上开发,优化,测试和主要使用的。 然而, Windows版本的Redis是一个高质量的端口,它只是通过所有ServiceStack.Redis测试套件的官方发行版的一个小版本点,因此如果您只能访问Windows服务器,那么它是Linux版本的合适替代品。 Because they're typically developed, optimized, tested and primarily used on Linux/OSX. However the Windows v ...