如何使用php redis获取redis中的所有密钥?

ope*_*guy 7 php redis phpredis

我使用https://github.com/nicolasff/phpredis 扩展来访问redis.我想从php代码获取redis中的所有密钥.我试过以下代码

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$allKeys = $redis->keys('*');
print_r($allKeys); // nothing here
Run Code Online (Sandbox Code Playgroud)

但是在shell中的命令给出了结果

127.0.0.1:6379> KEYS *
"kq92p7b5tf63tmk12v54373e03 hs7ep4lc2m6ci5kk5dosgpelg4 
pt7lfejenqbmmovjpmp9aojuf0 2p05gf20or6r5ee5i7sts90kn1 
cb1d6g3d3bvqetjfmkmaurmpp3"
Run Code Online (Sandbox Code Playgroud)

我可以通过php脚本以下列方式设置密钥和数据

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set(session_id(), json_encode(array('uname'=>'messi fan')));
Run Code Online (Sandbox Code Playgroud)

怎么KEYS *从redis使用phpredis?

Agi*_*gis 8

您的代码没有任何问题.您正在执行此操作:$redis->keys('*')检索所有密钥.

结果:

"kq92p7b5tf63tmk12v54373e03 hs7ep4lc2m6ci5kk5dosgpelg4 
pt7lfejenqbmmovjpmp9aojuf0 2p05gf20or6r5ee5i7sts90kn1 
cb1d6g3d3bvqetjfmkmaurmpp3"
Run Code Online (Sandbox Code Playgroud)

实际上是你做的时候设置的关键:

 $redis->set(session_id(), json_encode(array('uname'=>'messi fan')));
Run Code Online (Sandbox Code Playgroud)

所以session_id()返回了值:

kq92p7b5tf63tmk12v54373e03 hs7ep4lc2m6ci5kk5dosgpelg4 
pt7lfejenqbmmovjpmp9aojuf0 2p05gf20or6r5ee5i7sts90kn1 
cb1d6g3d3bvqetjfmkmaurmpp3
Run Code Online (Sandbox Code Playgroud)

因此,这成为您设置的密钥的名称.


小智 -9

尝试这个

 $redis->get('key');
Run Code Online (Sandbox Code Playgroud)