在新聞系統中很常見的功能是最新的十條新聞,下一頁之后顯示后十條,再下一頁又十條,直至沒有數據。以前常見的做法是制成靜態頁面緩存,但是更新時又要重建靜態頁面緩存。本章我們演示用 Redis 的列表數據結構來制作文章列表和分頁功能。
## 創建數據并存入 Redis
模型事件,篇幅原因不表述非常普通的創建操作了
~~~
<?php
namespace app\index\model;
use think\Model;
class Article extends Model
{
protected $autoWriteTimestamp = 'datetime';
protected static function init()
{
// 數據創建成功后將數據保存到 Redis
self::event('after_insert', function ($event) {
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
$redis->lPush('lists', $event);
});
}
}
~~~
## 讀取 Redis 中列表及分頁
~~~
// 獲取頁碼
$page = Request::instance()->get('page', 1);
// 每頁條數
$list_rows = 10;
從集合中拿出數據
$lists = $redis->lRange('lists', $page * $list_rows - $list_rows, $page + $list_rows);
var_dump($lists);
~~~