// PHP后端代码示例
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 存储用户画像
$userId = 1001;
$userProfile = [
'tags' => ['旅行', '音乐', '美食'],
'location' => '北京',
'last_active' => time()
];
$redis->hMSet("user:profile:$userId", $userProfile);
// 读取用户画像
$cachedProfile = $redis->hGetAll("user:profile:$userId");
2、匹配结果缓存
对高频匹配结果(如“附近的人”“相似兴趣用户”)进行缓存,设置TTL(如5分钟)避免数据过期。
// 缓存附近的人(GeoHash算法)
$redis->geoAdd('users:location', 116.404, 39.915, $userId);
$nearbyUsers = $redis->geoRadius('users:location', 116.404, 39.915, 5, 'km');
$redis->setex("nearby:$userId", 300, json_encode($nearbyUsers)); // 缓存5分钟
// 用户滑动操作写入Stream
$redis->xAdd('user:actions', '*', [
'user_id' => $userId,
'action' => 'swipe_right',
'target_id' => 1002,
'timestamp' => time()
]);
// 消费者组处理匹配逻辑
$redis->xGroupCreate('user:actions', 'match_group', '0', MKSTREAM);
$messages = $redis->xReadGroup('match_group', 'consumer1', ['user:actions' => '>'], 1, 1000);
2.计数器与排行榜
使用Redis的Sorted Set存储用户热度值(如被喜欢次数),快速生成推荐列表。
// 用户被喜欢次数增加
$redis->zIncrBy('user:popularity', 1, 1002);
// 获取Top 10热门用户
$topUsers = $redis->zRevRange('user:popularity', 0, 9, true);
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。