思路什么的就不说了直接上结果
共使用redis四个命令:Hmset、Zadd、Zrange、Zrevrange;
Hmset:将数据存储在hash数据结构里
Zadd :将数据存储在有序集合里面
Zrange:取出有序集合区间内的值(成员),根据分数值从小到大排序
Zrevrange:取出有序集合区间内的值(成员),根据分数值从大到小排序
上代码:
/**
* 设置redis缓存
* @param $id
* @param $data
* @return bool
*/
public function setRedisInfo($id, $data)
{
$redis = new redis();
if (isset($id) && isset($data)) {
//存储数据
$redis->hMSet($id, $data);
//根据id排序
$redis->zAdd('zadd:file', $id, $id);
//根据updated_at 排序
$redis->zAdd('zadd:file:updated_at', $data['updated_at'], $id);
//根据文件大小排序
$redis->zAdd('zadd:file:file_size', $data['file_size'], $id);
}
return false;
}
/**
* 获取缓存
* @param $page
* @param $pagesize
*/
public function getRedisInfo($page, $pagesize)
{
$redis = new redis();
if (isset($page) && isset($pagesize)) {
//分页设置
$li_start = ($page - 1) * $pagesize;
$li_end = $li_start + $pagesize;
//根据id从小到大排序获取数据
$id_arr = $redis->zRange('zadd:file', $li_start, $li_end);
//根据id从大到小排序获取数据
$id_arr = $redis->zRevRange('zadd:file', $li_start, $li_end);
//根据updated_at从小到大排序获取数据
$id_arr = $redis->zRange('zadd:file:updated_at', $li_start, $li_end);
//根据updated_at从大到小排序获取数据
$id_arr = $redis->zRevRange('zadd:file:updated_at', $li_start, $li_end);
....
if ($id_arr) {
$list = [];
foreach ($id_arr as $v) {
$list[] = $redis->hGetAll($v);
}
return $list;
}
return false;
}
return false;
}
/**
* 删除缓存
*/
public function delRedis($id)
{
if (isset($id))
$redis = new redis();
$redis->zRem('zadd:file', $id);
$redis->zRem('zadd:file:updated_at', $id);
$redis->del($id);
return true;
}
return false;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。