2013-12-20 58 views

回答

2

这取决于你如何保存你的会话。
如果将它们保存在密钥模式sess:<sid>之后,则可以使用keys sess:*获取所有会话密钥。你也应该知道keys命令可能会导致性能问题,你应该避免在生产环境中使用它。

编辑
由于Redis的2.8,你可以使用命令scan超过会话密钥增量迭代。虽然它在phpredis库中不是最新的。

+0

需要它来控制在线用户,改变他们的权限等 我添加的php.ini的配置,显示节能方法的会议。 因此它也将用于生产服务器 – brigantaggior

+1

@brigantaggior [docs](https://github.com/nicolasff/phpredis#php-session-handler)表示会话密钥前缀“defaults to PHPREDIS_SESSION:”,所以在默认情况下,您可以使用“键PHPREDIS_SESSION:*”来检索所有会话密钥。或者使用phpredis“$ allKeys = $ redis-> keys('PHPREDIS_SESSION:*');”https://github.com/nicolasff/phpredis#keys-getkeys – adamsmith

1

如果您只想要会话密钥的计数,您可以使用带有Lua函数的EVAL方法。

$redis = new Redis(); 
$redis->connect('127.0.0.1', 6379); 
$count = $redis->eval('return table.getn(redis.call("keys", "PHPREDIS_SESSION:*"))'); 

我解释Redis Sessions in PHP with Kohana如果您想了解更多的细节。这里是我们管理的Redis键仪表板:

Redis Dashboard

+0

keys命令不建议在生产环境中使用。 –