php使用redis做游戏服务端缓存
<?php
// 确保已经安装并启用了phpredis扩展
// 连接到Redis服务器
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 检查是否有旧的连接,并删除
$old_connections = $redis->get('game_connections');
if ($old_connections) {
$redis->zRemRangeByScore('game_connections', '-inf', $old_connections);
}
// 设置当前连接的过期时间
$redis->set('game_connections', time());
$redis->expire('game_connections', 120); // 设置键的过期时间为120秒
// 添加当前连接到有序集合
$redis->zAdd('game_connections', time(), $connection_id);
// 检查当前在线人数
$online_count = $redis->zCard('game_connections');
echo "当前在线人数:$online_count\n";
// 获取最近登录的用户
$recent_logins = $redis->zRevRange('game_connections', 0, 9);
foreach ($recent_logins as $login) {
echo "最近登录的用户:$login\n";
}
// 检查特定用户是否在线
$user_online = $redis->zScore('game_connections', $user_id);
if ($user_online) {
echo "用户{$user_id} 在线\n";
} else {
echo "用户{$user_id} 不在线\n";
}
// 注意:以上代码仅作为示例,实际使用时需要根据具体的需求和环境进行调整。
?>
这段代码展示了如何使用Redis来跟踪游戏服务器中的在线用户。它使用了有序集合(sorted set)来存储连接ID,并且设置了过期时间来定期清理旧的连接。同时,它还提供了一些基本的用户在线状态检查和最近登录用户的查询。这是一个简单的缓存解决方案,可以用于游戏后端来提高性能和响应速度。
评论已关闭