在新闻系统中很常见的功能是最新的十条新闻,下一页之后显示后十条,再下一页又十条,直至没有数据。以前常见的做法是制成静态页面缓存,但是更新时又要重建静态页面缓存。本章我们演示用 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);
~~~