前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >laravel 常用的一些例子总结

laravel 常用的一些例子总结

作者头像
友儿
发布2022-09-11 14:38:07
5210
发布2022-09-11 14:38:07
举报
文章被收录于专栏:友儿友儿

在laravel中使用redis的分布式锁

例一
代码语言:javascript
复制
<?php

    $lockKey = 'lockKey';
    $redis = Illuminate\Support\Facades\Redis::connection();
    $redis->setnx($lockKey, 1);
    $redis->expire($lockKey, 10);
?>
这样有一个问题,setNX设置过期时间并不是原子的操作,如果在设置执行完 $redis->setnx($lockKey, 1);时服务器宕机了,这时候未设置成功过期时间,则其他用户获取不到锁
例二
代码语言:javascript
复制
<?php
    $lockKey = 'lockKey';
    $redis = Illuminate\Support\Facades\Redis::connection();
    $lock = $redis->set($lockKey, 1, 'ex', 10,'nx');
?>
例二相对于例一而言,实现了原子操作设置过期时间(从2.6.12版本开始才有的)
下面我重点说一下laravel中set命令的几个参数含义,在网上未曾找到详细的解释,特此记录下来。
代码语言:javascript
复制
//参数一: $key                           缓存键
//参数二: $value                         缓存值
//参数三: $expireResolution              EX/PX
//                                               EX        设置键key的过期时间,单位时秒(seconds)
//                                               PX        设置键key的过期时间,单位时毫秒(milliseconds)              
//   参数四: $expireTTL                     缓存键过期时间,单位由参数三决定
//   参数五: $flag                          NX/XX                               
//                                                NX  只有键key不存在的时候才会设置key的值
//                                                XX  只有键key存在的时候才会设置key的值                            
set($key, $value, $expireResolution = null, $expireTTL = null, $flag = null)

在Laravel中框架查询运行的 SQL 语句

方法一:
代码语言:javascript
复制
 DB::connection()->enableQueryLog(); // 开启查询日志
 ......
 dd(DB::getQueryLog());
方法二:
  • 安装
代码语言:javascript
复制
 composer require guanguans/laravel-dump-sql -v
 php artisan vendor:publish --provider="Guanguans\\LaravelDumpSql\\ServiceProvider"
  • 使用1
代码语言:javascript
复制
 // Get sql statement.
User::where('id', 1)->toRawSql();
DB::table('user')->where('id', 1)->toRawSql();

// Print SQL statements.
User::where('id', 1)->dumpSql();
DB::table('user')->where('id', 1)->dumpSql();

// Print SQL statements and exit.
User::where('id', 1)->ddSql();
DB::table('user')->where('id', 1)->ddSql();
  • 使用2
    • 生成config/dumpsql.php文件
    • 自定义别名
代码语言:javascript
复制
php artisan vendor:publish --tag="laravel-dump-sql"
代码语言:javascript
复制
return [
    /*
     * Get sql statement.
     */
    'to_raw_sql' => 'Your favorite method name',

    /*
     * Print SQL statements.
     */
    'dump_sql' => 'Your favorite method name',

    /*
     * Print SQL statements and exit.
     */
    'dd_sql' => 'Your favorite method name',
];
方法三:
  • select语句可以直接使用->tosql();
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在laravel中使用redis的分布式锁
    • 例一
      • 这样有一个问题,setNX设置过期时间并不是原子的操作,如果在设置执行完 $redis->setnx($lockKey, 1);时服务器宕机了,这时候未设置成功过期时间,则其他用户获取不到锁
    • 例二
      • 例二相对于例一而言,实现了原子操作设置过期时间(从2.6.12版本开始才有的)
      • 下面我重点说一下laravel中set命令的几个参数含义,在网上未曾找到详细的解释,特此记录下来。
  • 在Laravel中框架查询运行的 SQL 语句
    • 方法一:
      • 方法二:
        • 方法三:
        相关产品与服务
        云数据库 Redis
        腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档