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?
您的代码没有任何问题.您正在执行此操作:$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)
因此,这成为您设置的密钥的名称.