//链接Redis
$redis = new Redis();
$redis->connect("127.0.0.1", 6379);
//基础操作
if (0) {
//进入队列 从右边进入
$redis->rpush("books", "php", "java", "python");
//进入队列 从左边进入
// $redis->lpush("books", "php", "java", "python");
//获取长度
// $redis->llen("books");
//左边出
// $redis->lpop("books");
//右边出
// $redis->rpop("books");
//指定10秒内返回,假如10秒没有可返回的数据,就返回nil
$redis->blpop("books", 10);
//在某一个元素前/后添加一个元素
$redis->linsert("books", "before", "java", "c++");
//通过索引获取一个元素
dd($redis->lindex("books", 2), 'lindex');
//通过索引获取list区间内多个元素
dd($redis->lrange("books", 0, -1), 'lrange');
//保留下标索引 1-3 的元素,其他去掉
dd($redis->ltrim("books", 1, 3), 'ltrim');
dd($redis->lrange("books", 0, 2), 'lrange');
}
/*
* 消息队列
* //进入队列 从右边进入 右边出
* */
if(1){
//专门接收数据存入list 中
$redis->rpush("books", "php", "java", "python");
//专门获取数据处理
// $text = $redis->blpop("books", 10);
$text = $redis->lpop("books" );
$len = $redis->lLen("books");
dd($len,'length');
if($text){
dd($text,"to do some thing");
}
//to do some thing
}
/*
* list 应用场景
* page 分页查询
* */
if(0){
//根据一定的排序获取主键ID
//存入list中 1,2,3,4,5,6,7,8,9
$ids_arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
foreach ($ids_arr as $id){
$redis->rpush("article_page_ids", $id);
}
//每页三个
$size = 3;
//第一页: 0,2
//第二页: 3,5
//第三页: 6,8
//分页计算排序 ($page-1) * size ,($page) * size -1
$ids = [];
$len = $redis->lLen("article_page_ids");
dd($len,'length');
for ( $page = 1;$page<= ceil($len/$size);$page++ ){
//返回分页数据的ID集合
$ids = $redis->lrange("article_page_ids", ($page-1) * $size ,($page) * $size -1);
// 根据主键查询数据 自定义字符串/数字来实现排序
$sql[$page] = "select * from aritcle where id in(".implode(',',$ids).") order by field(id,".implode(',',$ids).")";
}
dd($sql,'sql');
}