美文网首页
Laravel中session&缓存

Laravel中session&缓存

作者: 老衲灬 | 来源:发表于2018-10-13 01:15 被阅读88次

    一、session

    在Laravel中主要有两种方式处理Session数据:全局的辅助函数session,或者通过Request实例。

    1、存储session数据

    //通过put方法 存储一个值  $_SESSION[‘key’] = ‘value’;
    $request->session()->put('key', 'value');
    $request->session()->put(['key'=>'value']);
    //通过put方法 存储一个数组
    $request->session()->put('user', ['username'=> 'xiongda']);
    //通过put方法 用点语法 设置session数组中的一个键值对,
    $request->session()->put('user.email', ['xiongda@qq.com');](mailto:'xiongda@qq.com');)
    
    //通过全局辅助函数
    session(['key' => 'value']);
    

    2、获取session数据

    //获取单个session数据
    $value = $request->session()->get('key');
    //第二个参数指定默认值,当指定键在session中不存在时返回默认值
    $value = $request->session()->get('key', 'default');
    //使用 点语法,获取值为数组的session中的一个键值对
    $value = $request->session()->get('user.email');
    
    //使用辅助函数session()
    $value = session('key');
    //第二个参数指定默认值
    $value = session('key', 'default');
    //获取所有session数据
    $data = $request->session()->all();
    //session()不传参数,得到的是一个对象
    $data = session();
    

    可以使用has方法或exists方法,判断session中是否存在指定项:
    has方法可用于检查数据项在session中是否存在。如果存在并且不为null的话返回true:

    if ($request->session()->has('users')) {
        //
    }
    

    要判断某个值在session中是否存在,即使是null的话也无所谓,则可以使用exists方法。如果值存在的话exists返回true:

    if ($request->session()->exists('users')) {
        //
    }
    

    3、删除session数据

    forget方法从session中移除指定数据

    $request->session()->forget('key');
    

    flush方法从session中移除所有数据

    $request->session()->flush();
    

    pull方法从session获取并删除数据:

    $value = $request->session()->pull('key', 'default');
    

    4、一次性session

    一次性session
    有时候你可能想要在session中存储只在下个请求中有效的数据,可以通过flash方法来实现。使用该方法存储的session数据只在随后的HTTP请求中有效,然后将会被删除:

    $request->session()->flash('status', 'Task was successful!');
    

    二、缓存

    Laravel 为不同的缓存系统提供了统一的 API,缓存配置位于config/cache.php,在该文件中可以指定在应用中使用哪个缓存驱动(默认为file文件缓存)。


    操作缓存主要使用Cache类。(引入use Cache;

    1、设置缓存数据

    put(键, 值, 有效期),如果该键已经存在,则直接覆盖原来的值

    Cache::put('key', 'value', $minutes);
    

    add(键, 值, 有效期),添加新的缓存项,返回true。如果该键已存在,则设置失败,返回false。

    Cache::add('key', 'value', $minutes);
    

    永久存储数据
    forever方法用于持久化存储数据到缓存,这些值必须通过forget方法手动从缓存中移除:

    Cache::forever('key', 'value');
    

    2、获取缓存数据

    get方法用于从缓存中获取缓存项,如果缓存项不存在,返回null。
    可以传递第二个参数,指定缓存项不存在时返回的默认值:

    //获取指定缓存
    $value = Cache::get('key');
    //指定默认值
    $value = Cache::get('key', 'default');
    

    可以传递一个闭包作为默认值,如果缓存项不存在的话闭包的结果将会被返回。
    传递闭包允许你可以从数据库或其它外部服务获取默认值:

    $value = Cache::get('key', function(){
        return DB::table('table_name')->first();
    });
    

    可以使用has 方法判断缓存项是否存在:

    if(Cache::has('key')){
        //
    }
    

    3、删除缓存数据

    forget方法从缓存中移除指定数据

    Cache::forget('key');
    

    flush方法从缓存中移除所有数据

    Cache::flush();
    

    pull方法从缓存获取并删除数据,如果缓存项不存在则返回null

    Cache::pull('key');
    

    4、缓存数值增加/减少

    incrementdecrement方法可用于调整缓存中的整型数值。
    这两个方法都可以接收第二个参数来指明缓存项数值增加和减少的数目

    Cache::increment('key'); //将key值 +1
    Cache::increment('key', 3); //将key值 +3
    Cache::decrement('key'); //将key值 -1
    Cache::decrement('key', 3); //将key值 -3
    

    相关文章

      网友评论

          本文标题:Laravel中session&缓存

          本文链接:https://www.haomeiwen.com/subject/azvnaftx.html