任何人都可以帮助我吗?我使用redis缓存。但是当我使用分页时,我在每个页面上看到相同的结果。我该如何解决?感谢。
答案 0 :(得分:5)
您应该使用当前页面的密钥缓存每页的结果。
<?php
$my_tabindex=1;
foreach($marks as $student_mark):
<tr>
<td class="span3">
<?php
//this is derived from another query that returns information over students of a selected class
echo $row['student_name'];
?>
</td>
<td>
<input type="number" step = "0.01" value="<?php echo $student_mark['mark_obtained'];?>" name="mark_obtained" tabindex="<?php echo $my_tabindex+1; ?>" />
</td>
<td>
<input type="hidden" name="operation" value="update" />
<button type="submit" class="btn btn-normal btn-gray"> Update</button>
</td>
</tr>
?>
<?php
endforeach;
?>
答案 1 :(得分:1)
这个缓存和清除分页缓存的解决方案。
如何缓存:
$page = request()->get('page', 1);
$limit = request()->get('limit', 10);
$users = Cache::remember('admin' . $page, 10, function() use ($limit){
return DB::table('users')->paginate($limit);
});
您可以使用循环来检查前缀并像这样删除它们。
public static function forgetCaches($prefix)
{
// Increase loop if you need, the loop will stop when key not found
for ($i=1; $i < 1000; $i++) {
$key = $prefix . $i;
if (Cache::has($key)) {
Cache::forget($key);
} else {
break;
}
}
}
清除缓存:
// Clear caches:
forgetCaches('admin');