<?php
# 缓存预热 : 在内存缓存雪崩之后,如果没有做持久化的话,
# 会导致内存的所有数据丢失,导致MYSQL服务器压力过大,导致宕机,为了解决这个问题,需要准备一个
# 预热脚本
header( 'content-type:text/html;charset=utf-8' );
$mysql_obj = new mysqli(
'127.0.0.1',
'root',
'',
'yii_shop'
);
$redis_obj = new Redis();
# content connect
$redis_obj -> connect( '127.0.0.1' , '6379' );
$redis_obj -> auth('likang');
$mysql_obj -> query( 'set names utf8' );
# 预热用户列表前五页的数据
$i = 1;
while( $i <= 5 ){
$limit = ($i - 1 ) * 5;
# 设置版本号
$version = 1;
$key = 'user_list_cache_version';
$redis_obj -> set( $key , $version );
$this_page_key = 'user_list_'.$i.'_'.$version;
$sql = ' select * from shop_account order by account_id limit ' . $limit . ',5' ;
$this_page_data = $mysql_obj -> query( $sql ) -> fetch_all( MYSQLI_ASSOC );
$this_page_id = [];
foreach( $this_page_data as $key => $value ){
$detail_key = 'user_detail_' .$value['account_id'];
$redis_obj -> set( $detail_key , serialize($value) );
$this_page_id[] = $value['account_id'];
}
$redis_obj -> set( $this_page_key , serialize( $this_page_id ) );
$i ++;
}
缓存预热脚本
最新推荐文章于 2024-08-15 22:21:30 发布