如何从Redis获取会话列表?

时间:2013-12-20 06:30:44

标签: php session redis

我的会话存储在Redis服务器https://github.com/nicolasff/phpredis

如何从服务器获取所有会话列表?

当我使用文件系统时非常容易:

preg_grep("/^sess_/", scandir(ini_get("session.save_path")))

的php.ini:

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

2 个答案:

答案 0 :(得分:2)

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

修改
从Redis 2.8开始,您可以使用命令scan逐步迭代会话密钥。虽然它在phpredis lib中不是最新的。

答案 1 :(得分: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