- <?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 ++;
- }