redis中有MOVE指令用于同实例转移(剪切)键,有MIGRATE指令用于跨实例转移(复制或剪切)键,偏偏没有同实例复制键,所幸有EVAL指令用于执行内嵌脚本。很简单。
eval "local s=redis.call('dump', KEYS[1]) return s and redis.call('restore', ARGV[1], 0, s, 'REPLACE')" 1 keyname keyname_copy
如果是在Python中使用,可以封装成一个函数。
def copy(redis, key, key_copy): return None != redis.eval( "local s = redis.call('dump', KEYS[1]) return s and redis.call('restore', ARGV[1], 0, s, 'REPLACE')", 1, key, key_copy)