添加缓存

This commit is contained in:
youda 2025-04-18 14:03:40 +08:00
parent 9bd5d0b7d7
commit a996dd0902
3 changed files with 70 additions and 11 deletions

View File

@ -56,11 +56,26 @@ class Goods extends Base
*/
public function goods(Request $request)
{
$type_str = request()->param('type', -1);
$user_id = $this->getUserId();
$page = request()->param('page', 1);
// 获取Redis实例并检查缓存
$redis = (new \app\common\server\RedisHelper())->getRedis();
$cache_key = "goods_list_{$type_str}_{$user_id}_{$page}";
$cache_data = $redis->get($cache_key);
// 如果缓存存在,直接返回缓存数据
if ($cache_data) {
$cached_data = json_decode($cache_data, true);
return $this->renderSuccess('请求成功', $cached_data);
}
$whe = [];
$whe[] = ['status', '=', 1];
$whe[] = ['show_is', '=', 0];
$paginate = 15;
$type_str = request()->param('type', -1);
// 1一番赏 2无限赏 3擂台赏 4抽卡机 5积分赏 6全局赏 7福利盲盒 8领主赏 9连击赏 10 商品赏
// 使用映射数组简化类型条件判断
@ -94,7 +109,6 @@ class Goods extends Base
$whe[] = ['type', 'in', [2, 6, 8, 16]];
}
$user_id = $this->getUserId();
if ($user_id == 0) {
//充值金额
$whe[] = ['unlock_amount', '=', 0];
@ -135,6 +149,10 @@ class Goods extends Base
'data' => [],
'last_page' => $goods->lastPage(),
];
// 缓存空结果,避免重复查询
$redis->set($cache_key, json_encode($new_data), 300);
return $this->renderSuccess('请求成功', $new_data);
}
@ -224,6 +242,10 @@ class Goods extends Base
'data' => $goods->items(),
'last_page' => $goods->lastPage(),
];
// 将结果缓存到Redis设置过期时间为30秒30秒
$redis->set($cache_key, json_encode($new_data), 30);
return $this->renderSuccess('请求成功', $new_data);
}

View File

@ -79,8 +79,20 @@ class Index extends Base
{
// 设置header
$type = \request()->param('type/d', 0);
// 使用Redis缓存
$redis = (new \app\common\server\RedisHelper())->getRedis();
$cacheKey = 'danye:content:' . $type;
// 尝试从缓存获取数据
$cacheData = $redis->get($cacheKey);
if ($cacheData) {
$cacheData = json_decode($cacheData, true);
return json(['status' => 1, 'msg' => '请求成功', 'data' => $cacheData['content'], 'is_image_optimizer' => $cacheData['is_image_optimizer']]);
}
// 缓存不存在,查询数据库
$info = Danye::where(['id' => $type])->find();
$is_image_optimizer = 0;
if ($info) {
@ -90,6 +102,14 @@ class Index extends Base
} else {
$content = '';
}
// 存入Redis缓存设置过期时间为60秒(10分钟)
$cacheData = [
'content' => $content,
'is_image_optimizer' => $is_image_optimizer
];
$redis->setex($cacheKey, 600, json_encode($cacheData));
// return $this->renderSuccess("请求成功", $content);
return json(['status' => 1, 'msg' => '请求成功', 'data' => $content, 'is_image_optimizer' => $is_image_optimizer]);
}

View File

@ -35,6 +35,18 @@ class Infinite extends Base
{
$user_id = $this->getUserId();
$goods_id = request()->param('goods_id/d', 0);
// 获取Redis实例并检查缓存
$redis = (new \app\common\server\RedisHelper())->getRedis();
$cache_key = "infinite_goodsdetail_{$goods_id}_{$user_id}";
$cache_data = $redis->get($cache_key);
// 如果缓存存在,直接返回缓存数据
if ($cache_data) {
$cached_data = json_decode($cache_data, true);
return $this->renderSuccess("请求成功", $cached_data);
}
$goods = Goodsmodel::field('id,title,imgurl_detail,price,stock,sale_stock,lock_is,type,status,addtime,rage_is,rage,item_card_id,lingzhu_is,lingzhu_shang_id,is_shou_zhe,daily_xiangou,quanju_xiangou')
->where(['id' => $goods_id])
->find();
@ -59,14 +71,15 @@ class Infinite extends Base
$goods['item_card'] = $item_card;
$goods['item_card_info'] = '重抽卡说明: 怒气值达到' . $goods['rage'] . '时, 获得重抽卡';
//当前盒子的怒气值
$user_rage = Db::name('user_rage')->field('id,rage')->where(['user_id' => $user_info['id'], 'goods_id' => $goods_id])->find();
$goods['user_rage'] = $user_rage ? $user_rage['rage'] : 0;
//怒气值进度
if (!$user_rage || $user_rage['rage'] <= 0) {
$goods['user_rage_schedule'] = 0;
} else {
$goods['user_rage_schedule'] = round($user_rage['rage'] / $goods['rage'] * 100);
;
if ($user_id > 0) {
$user_rage = Db::name('user_rage')->field('id,rage')->where(['user_id' => $user_id, 'goods_id' => $goods_id])->find();
$goods['user_rage'] = $user_rage ? $user_rage['rage'] : 0;
//怒气值进度
if (!$user_rage || $user_rage['rage'] <= 0) {
$goods['user_rage_schedule'] = 0;
} else {
$goods['user_rage_schedule'] = round($user_rage['rage'] / $goods['rage'] * 100);
}
}
}
}
@ -180,6 +193,10 @@ class Infinite extends Base
'danye_id' => $type1,
'limitInfo' => $limitInfo
];
// 将原始数据缓存到Redis设置过期时间为60秒3分钟
$redis->set($cache_key, json_encode($new_data), 180);
return $this->renderSuccess("请求成功", $new_data);
}