redis教程

2023-11-04

Redis和tp使用

类型

支持多种数据结构类型,包括string(字符串)、hash(哈希)、list(链表)、set(无序集合)、Zset(有序集合)

Redis能读的速度是110000次/s,写的速度是81000次/s 。

Redis所有单个命令的执行都是原子性的。

适合场合及其优势

(1)高性能缓存,最常见的应用场景

(2)多类型数据结构,适合各种类型数据,

(3)Redis分布式存储

(4)数据有生命周期,Redis的键可以设置过期时长,一段时间以后自动删除。

(5)高并发和海量数据的处理

(6)数据持久化,数据存储到硬盘里面,服务器断电不丢失。

原生先连接

php安装redis

$redis = new Redis(); $redis->connect('127.0.0.1', 6379, 60);//连接redis服务,指定主机,端口,和超时时间

$redis->auth('123456');//密码

切换数据库

//tp
Cache::select(2);
原生
$redis = new Redis();
$redis->connect('127.0.0.1', 6379, 60);//连接redis服务,指定主机,端口,和超时时间
$redis->select(2);
原生
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('123456');//密码
$dade = $redis->set("name", "dade");
echo $redis->get('name');

(字符串)string

string是redis最基本的类型

redis的string可以包含任何数据,包括序列化的对象、数组。

单个value值最大上限是1G字节, 如果只用string类型,redis就可以被看作加上持久化特性(服务器重启之后,数据不丢失)的memcache

应用场景,缓存HTML页面,关系型数据库的查询结果,统计网站访问者数量,每天注册用户数,统计活跃用户,用户在线状态等等。

(1)set保存

语法:set  键名称  值 
返回值,设置成功返回OK,设置失败返回nil
注意:重新设置则直接覆盖。
Cache::set('name', '大得0',36000);//缓存
Cache::get('name');//查
原生
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$dade = $redis->set("name", "dade");
echo $redis->get('name');

(2)mset保存多个

语法:mset key value [key value]

同时设置多个key,如果key存在会覆盖,该命令是原子的,所有的键会同时设置成功或失败,成功返回OK

原生
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$dade = $redis->mset(array('name'=>'666','age'=>19));
echo $redis->get('age');
tp6
Cache::mset(array('name'=>'dade','age'=>19));//缓存
echo Cache::get('age');

(3)setex保存设置时间

语法:setex key seconds value

给一个键设置为字符串类型,并指定生存时间(单位:秒),该命令是原子的,如果设置失败或指定生存时间失败,会恢复初始状态。

返回值:如果设置成功,返回OK,如果设置失败,返回错误信息。

//缓存数字,缓存文字和字符串(错)
Cache::setex('dades',100,300);
echo Cache::get('dades');
原生
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->setex('keys',100,10);
echo $redis->get('keys');

(4)setnx设置字符串类型

语法:setnx key value

如果key不存在,将其设置为字符串类型,设置成功,如果该键已经存在,则设置失败。

设置成返回1,设置失败,返回0.

原生
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->setnx('ssss','6666');
echo $redis->get('ssss');

(5)get查

语法:get 键名称

(6)mGet查多个

$redis->set('key1', 'value1');
$redis->set('key2', 'value2');
$redis->set('key3', 'value3');
$redis->mGet(array('key1', 'key2', 'key3')); //array('value1', 'value2', 'value3');
$redis->mGet(array('key0', 'key1', 'key5'));//array(`FALSE`, 'value2', `FALSE`);

(7)strlen查字符串长度

语法:strlen key

返回key的字符串长度,

返回值:字符串长度,如果key不存在返回0,如果不是字符串类型,返回错误信息。

Cache::strlen('ddddss1');
原生
$redis->strlen('ddddss1');

(8)getSet设置新值返回旧值

语法:getset key value

原子的给一个key设置新值,并且将旧值返回,

返回值,如果key不是字符串类型,返回一个错误,

应用场景:比如获取计数器并且重置为0.

$redis->set('x', '42'); 
$exValue = $redis->getSet('x', 'lol');  // return '42'
$redis->get('x')'       // return 'lol'

(9)incr 每执行一次+1

对key的值做加加操作,,每执行一次值加1,值类型要是数据类型。

语法:incr key

将key中存储的数字值增一操作,如果key不存在,则key的值会先被初始化为0,然后再执行incr操作,key的值必须是整型。

Cache::incr('age');

(10)incrBy一次加多少

执行加法的命令,可以指定相加的值,

语法:incrby key 相加的值

$redis->incrBy('key1', 10);

(哈希,存储对象)hash

Redis中的hash类型可以看成是具有key和value的容器,该类型非常适合存储对象信息,

mysql中一行的数据,类似于关联数组。

(1)hset保存对象

设置哈希里面的field和vlaue的值。

语法:hset 哈希的名称(键名称) field value

Cache::hset('name','dade','大得');
Cache::hset('name','age',18);
echo Cache::hget('name','age');

(2)hget读单

Cache::hget('name','age');

(3)hMset一次保存多个

一次性设置多个field和value

$redis->delete('user:1');
$redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
$redis->hIncrBy('user:1', 'salary', 100); 
//tp6
Cache::hMset('names',array('dade'=>123,'age'=>223));

(4)hMget一次获得多个

一次性获取 多个field的value

Cache::hMset('names',array('dade'=>123,'age'=>223));
$ss = Cache::hMget('names',array('dade','age'));
print_r($ss);

(5)hGetAll获得所有

获取指定哈希中所有的field和value

语法:hgetall 哈希的名称

Cache::hMset('names',array('dade'=>123,'age'=>22663));
$ss = Cache::hGetAll('names');
print_r($ss);

(链表,队列,最新,列表)list

list类型其实就是一个字符串的双向链表,按照插入顺序排序。可以添加一个元素到链表的头部(左边)或者尾部(右边),一个链表最多可以包含232-1个元素(4294967295,每个链表超过40亿个元素),这使得list既可以用作栈,也可以用作队列。

应用场景,粉丝列表,最新文章,消息队列等。

(1)lpush头部添加

从链表的头部添加一个或多个元素

语法: lpush 链表的名称(键的名称) 元素,操作为原子性操作,如果key不存在,一个空列表会被创建并执行lpush操作。返回执行lpush命令后,列表的长度。

echo Cache::lpush ('names','大得');//头部添加保存
echo Cache::lpush ('names','大得1');//头部添加保存
echo Cache::lpush ('names','大de2');//头部添加保存

(2)lrange查所有

获取链表里面的元素

语法:lragne 链表的名称 开始下标(索引) 结束下标(索引)

注意:如果开始下标是0,结束下标是-1则是返回链表中所有的元素。

注意:链表里面的元素是序号的(从0开始数,从头部开始),类似于索引数组

$dade =  Cache::lrange('names',0,-1);//读链表全部,数组
print_r($dade);

(3)lInsert插入某个之前

将元素插入到链表中某个元素之前或之后,

语法:lInsert(链表的名称)键 before|after 链表中的某个元素 新的元素。

如果命令执行成功,返回插入操作完成之后,列表的长度;如果没有找到链表中的元素,返回-1;如果链表不存在或空链表,返回0。

$dade =  Cache::lInsert('names', 'before', '大得', '6666');
print_r($dade);

(4)lset修改

修改链表中指定下标的元素;

语法:lset 链表名称 下标 新值

$dade =  Cache::lset('names', 1, '你来啊');
print_r($dade);

(5)lIndex返回指定下标值

返回链表中指定下标的元素

语法:lIndex 链表名 下标

$dade =  Cache::lIndex ('names', 1);
print_r($dade);

(6)rpush尾部添加

从链表的尾部添加元素

语法: rpush 链表的名称(键的名称) 元素

$dade =  Cache::rpush ('names', '尾部添加');
print_r($dade);

(7)llen返回列表的长度

返回列表的长度

语法:llen 链表名称

$dade =  Cache::llen ('names');
print_r($dade);

(8)lpop返回链表中头部的元素并删除

返回链表中头部的元素,并删除。

语法:lpop 链表名称

$dade =  Cache::lpop ('names');
print_r($dade);

(9)lrem删除链表中的元素

删除链表中的元素

语法:lrem key count value

根据参数count的值,删除链表中与value相等的元素。

count>0,从表头开始向表尾搜索,删除与value相等的元素,数量为count;

count<0;从表尾开始向表头搜索,删除与value相等的元素,数量为count;

count=0;删除表中所有与value相等的值,

返回值,被删除的元素的数量

$dade =  Cache::lrem ('names','大得');
print_r($dade);
原生
redis->lPush('key1', 'A');
$redis->lPush('key1', 'B');
$redis->lPush('key1', 'C'); 
$redis->lPush('key1', 'A'); 
$redis->lPush('key1', 'A'); 

$redis->lRange('key1', 0, -1); /* array('A', 'A', 'C', 'B', 'A') */
$redis->lRem('key1', 'A', 2); /* 2 */
$redis->lRange('key1', 0, -1); /* array('C', 'B', 'A') */

(10)ltrim保留指定范围的元素

保留指定范围的元素

语法:ltrim 链表的名称 开始下标 结束下标

$dade =  Cache::ltrim ('names',0,10);
print_r($dade);

(11)rpop返回链表尾部的元素并删除

删除并返回链表尾部的元素

$dade =  Cache::rpop ('names');
print_r($dade);

(无序集合)set

redis的set是string类型的无序集合

set元素最大可以包含(2的32次方-1)(整型最大值)个元素。

关于set集合类型除了基本的添加、删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现sns中的好友推荐功能。

sina公司的好友关注关系就大量使用了set集合类型。

注意:每个集合中的各个元素不能重复

该类型应用场合:qq好友推荐。

tom朋友圈(与某某是好友):mary jack xiaoming wang5 wang6

linken朋友圈(与某某是好友):yuehan daxiong luce wang5 wang6

(1)sadd向集合中添加元素

向集合中添加元素

语法:sadd 集合名(键名) 元素名称

$ss = Cache::sadd('namesaa','大得');
print_r($ss);

(2)smembers获取集合中的元素

获取集合中的元素

语法:smembers 集合名

$ss = Cache::smembers('namesa');
print_r($ss);

(3)sdiff差集,集合1存在,集合2不存在

获取集合中的差集(在集合1中存在,不在集合2中存在的元素)

语法:sdiff 集合1 集合2

$ss = Cache::sdiff('namesa','namesaa');
print_r($ss);

(4)sinter交集,两个集合中都存在

获取交集(在两个集合中都存在的元素)

语法:sinter 集合1 集合2

$ss = Cache::sinter('namesa','namesaa');
print_r($ss);

(5)sunion两个集合合并去掉重复

求并集(两个集合合并后,去掉重复的元素)

语法:sunion 集合1 集合2

$ss = Cache::sunion('namesa','namesaa');
print_r($ss);

(6)scard获取集合中元素的个数

获取集合中元素的个数

语法:scard 集合名称

$ss = Cache::scard('namesa');
print_r($ss);

(有序集合)zset

sorted set是set的一个升级版本,他在set的基础上增加了一个顺序属性(权值),这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。操作中的key理解为zset的名字。

注意:序号是可以重复的,在添加元素时,如果该元素已经存在,则更新序号的值。

(1)zadd有序集合中添加元素

向有序集合中添加元素。如果该元素存在,则更新其序号。

语法:zadd 集合名 序号 元素

//序号可重复
$ss = Cache::zadd('dade',1,'dade3');
print_r($ss);

(2)zrange读升续排列

(把集合排序后,返回名次[start,stop]的元素

默认是升续排列

Withscores 是把score也打印出来

按序号升序获取有序集合中的内容,

语法:zrange 集合名称 开始下标 结束下标

$ss = Cache::zrange('dade',0,-1);
print_r($ss);

(3)zrevrange读降序获取

按序号降序获取有序集合中的内容。

语法:zrevrange 集合名称 开始下标(索引) 结束下标(索引)

$ss = Cache::zrevrange('dade',0,-1);
print_r($ss);

(4)zremrangebyrank范围删除

zremrangebyrank 删除集合中排名在指定范围的元素(顺序从小到大排序)

语法:zremrangebyrank key min max

$ss = Cache::zremrangebyrank('dade',0,1);//删除集合0到1的元素
print_r($ss);

(5)zcard返回集合中元素的个数

语法:zcard key

返回有序集合中元素的个数

$ss = Cache::zcard('dade');
print_r($ss);

(6)zscore返回给定元素对应的score

语法:zscore key 元素

返回给定元素对应的score,就是给的序号

$ss = Cache::zscore('dade','dade3');
print_r($ss);

Redis 中的事务

Cache::multi();//开启事务
Cache::lpush('dade','dade3');
Cache::lpush('dade','dade3');
Cache::lpush('dade','dade3');
Cache::exec();//提交事务,提交后指定执行

Cache::multi();//开启事务
Cache::lpush('dade','dade3');
Cache::lpush('dade','dade3');
Cache::lpush('dade','dade3');
Cache::discard();//取消事务,不执行

乐观锁(原生)
set ticket 1
set money 100
watch ticket  //开启检测ticket,有变化,当前事务取消
multi
decr ticket
decrby money 100
exec  //提交事务ticket,监听到有变化,事务被取消

Redis主从复制

网站运行,mysql的写入、读取操作的sql语句比例:1:7

mysql为了降低每个服务器负载,可以设置读写分类(有写服务器、有读取服务器)

为了降低每个redis服务器的负载,可以多设置几个,并做主从模式

一个服务器负载“写”(添加、修改、删除)数据,其他服务器负载“读”数据

主服务器数据会“自动”同步给从服务器

Redis支持简单易用的主从复制(master-slave replication)功能,该功能可以让从服务器(slave server)成为主服务器(master server)的精确复制品。

主要作用:

主从备份,防止主服务器宕机;

读写分离,分担主服务器的任务;

任务分离,从服务器分别担任备份工作和计算工作。

注意点:

Redis使用异步复制,

一个主服务器可以有多个从服务器

不仅主服务器可以有从服务器,从服务器也可以有自己的从服务器,

复制功能不能回阻塞主、从服务器

主服务器配置

requirepass 设置的密码

requirepass 123456

配置:**

(1)bind 127.0.0.1改为 #bind 127.0.0.1

(2)protected-mode yes 改为 protected-mode no(关闭只能本地通信)

从服务器配置

(1)通过slaveof指定自己的角色,主服务器的地址和IP

slaveof 主服务器ip 端口号

(2)从服务器只读

从redis2.6开始,从服务器支持只读模式,通过slave-read-only配置项配置,该模式为从服务器的默认模式

(3)指定从服务器连接主服务器的密码

如果主服务器通过requirepass选项设置了密码,为了让从服务器同步操作顺利进行,通过masterauth配置连接主服务器密码。

配置:

#配置连接主服务器ip 端口

slaveof 192.161.1.69 22

#如果主服务器设置了密码,masterauth 密码

masterauth 123456

#默认就开启,从服务器只读模式

slave-read-only yes

查看是否配置正确

在从服务器执行info replication命令查看是否配置正确;

info replication

如果撤销,只需在从服务器里面屏蔽上面的配置即可。

配置注销就可以

#slaveof 主服务器ip 端口号

#masterauth 123456

redis主从复制的缺陷

每次从服务器断开后,无论是主动断开,还是网络故障,再连接主服务器,从服务器都要从主服务器全部dump出来rdb,再aof;即同步的过程都要重新执行一遍,所以要记住如果是多台从服务器时,不要一下子都启动起来

读数据

自己写,如果多台服务器,代码也在多台,做了负载均衡,写放一台服务器上,读本地redis从服务器,买一台都安装独立的redis(从服务器)。当要写入,封装一个方法,写到主服务器。

或者redis都不在本地,在代码中封装成一个数组,作为读分配。写封装一个方法或者采用框架的配置上主服务器

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

redis教程 的相关文章

  • 通过jquery ajax()和serialize()提交html表单

    我想通过 jquery ajax 提交此表单 这是我所做的 但它不起作用 即表单正在提交并刷新页面 但我没有看到响应 即在同一页面上打印数组 HTML
  • 在关联数组中查找重复值并将它们添加到计数中

    您好 我正在尝试计算关联数组中重复值的数量 如下所示 array 3 0 gt array 3 Title gt string 25 hello Price gt int 50 Count gt int 1 1 gt array 3 Tit
  • Laravel 8 图像不显示

    我在用Laravel 8 试图显示来自storage app subject image 路径 但不显示 下面是我的代码blade img src asset subject image data gt subject image alt
  • 如何在使用 Piwik 进行分析的页面上显示点击/访问计数器

    我想在主页上显示当天的访问量 该页面由 Piwik 跟踪 如何将 API 与 PHP 结合使用来获取今天的 唯一 访问量和点击量 以便我可以将它们显示在页面上的某个位置 result file get contents http mysit
  • php同时上传最大文件数

    我正在使用标签 用于使用 php 上传多个文件 我注意到 如果我选择超过 20 个文件 php 只会上传前 20 个文件 有没有办法扩大这个限制 这个限制被添加到PHP 5 2 12 https www php net releases 5
  • 使用 Laravel 返回一对多 Eloquent 关系中的最后一条记录

    假设存在一个One To Many关系 其中用户有许多工作 以及最后一条记录job表是用户当前的作业 让用户返回上一份工作的更好方法是什么 这是我尝试过的 User Class public function ejob return thi
  • 如何在javascript中显示目录中的所有图像?

    我想在 javascript 的帮助下动态显示目录中的所有图像 我怎样才能做到这一点 我不认为这是可能的 但如果您向 ASP NET 或 PHP 或类似 页面发出 AJAX 请求 它们可以列出文件夹中的文件并将其返回以供 Javascrip
  • 如何在 phpstorm 中自动生成类的属性?

    如果我实现一个类 它注入一些服务 我必须编写大量代码
  • JWT 中的注销不起作用

    我是 Laravel 的新手 我安装了 JWT 并登录 所以它工作并生成了一个令牌 当我在邮递员中注销时它返回 true 但一次又一次它返回 true 和 auth gt 用户 注销后始终返回用户 这是我的代码 public functio
  • PHP 中的 JS charCodeAt 等效项(具有完整的 unicode 和 emoji 兼容性)

    我在 JS 中有一个简单的代码 如果涉及特殊字符 我无法在 PHP 中复制它 这是 JS 代码 参见JSFiddle https jsfiddle net h8oca3qg 5 用于输出 var str t char t and speci
  • 新行分隔符不适用于 group_concat 函数

    我有一根绳子 name lastname name2 lastname2 包含数据库表中的值 我想显示它 喜欢 name lastname name2 lastname2 我使用 group concat 函数 它适用于逗号分隔符 但我需要
  • Laravel Eloquent 多对多查询 whereIn

    在我的应用程序中 我更新了关系one to many to many to many我正在尝试找出一种方法来保留相关功能 假设我有两个相关的表 例如狗和主人 如果我有很多主人 并且我想获取这些主人的狗 ID 列表 我应该如何雄辩地做到这一点
  • 在浏览器中就绪的 DOM 上缺少语言翻译弹出窗口:Laravel 5.2

    我的控制器中有以下代码 public function AllCountries Countries new App DataAccess CountryData gt GetAllCountries app gt setLocale fr
  • PHP 中的并行处理 - 你是如何做到的?

    我目前正在尝试在 php 中实现一个作业队列 然后 队列将作为批处理作业进行处理 并且应该能够并行处理一些作业 我已经做了一些研究并找到了几种实现它的方法 但我并不太了解它们的优点和缺点 例如 通过多次调用脚本来进行并行处理fsockope
  • rewrite_mod 已启用,但 .htaccess 不起作用

    我在 Amazon EC2 的 ubuntu 12 04 中使用 apache 2 2 我使用启用了 mod rewrite sudo a2enmod rewrite 并能够看到 apache2ctl M 现在我编写了以下 htaccess
  • 无法在Phalcon php中调用除indexAction之外的indexController的操作

    我的 xampp htdocs 目录中有一个名为 phalcon 的简单项目 并且我将 apache 配置为指向该文件夹 以便我可以在浏览器中转到 phalcon 当我尝试打开索引 默认 以外的索引控制器视图时 会出现问题 例如 我在索引控
  • 使用 PHP 上传、调整图像大小并裁剪图像中心

    我想要创建一个非常非常基本的上传 调整大小和裁剪 PHP 脚本 其功能与 Twitter 用于上传头像图片的方法相同 无论如何我最后检查过 我希望脚本拍摄任何尺寸的图像 将最短边的大小调整为 116 像素 然后裁剪顶部和底部 如果是横向 则
  • 性能方面插值(直接插入字符串)VS串联[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 htaccess 文件重定向[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 Edit 我想重定向一个网址 to www example com location sydney from www example com rss
  • 将文件附加到 PHPMailer

    我目前正在开发一个项目 该项目将文件作为 blob 存储在数据库中 我需要将文件附加到电子邮件并通过 PHPMailer 发送出去 我熟悉 mail gt addAttachment 但是 这个函数似乎只接受文件路径 而我没有 我想知道是否

随机推荐

  • QT基础:遍历QFormLayout列表布局器中的控件,并链接槽函数进行操作

    QFormLayout 是一个列表布局器 每一行的序号是从0开始的 类似于数组的下标 每一行有两个元素 左边的元素叫标签 Label 右边的元素叫字段 Field 这里是一个QFormLayout简单的布局演示 QFormLayout 列表
  • Hive的Join操作、Hive解决数据倾斜问题、Hive优化、Hive的分桶表、JDBC、体系结构、工程流程

    Hive的Join操作 order表数据 1 20180710 P001 20 2 20180710 P002 14 3 20180710 P001 35 4 20180710 P002 40 5 20180710 P001 10 6 20
  • 解决文本框刷新后之前输入的值还存在,没有清空的问题

    有过表单设计经验的朋友肯定知道 当我们在浏览器中输入表单信息的时候 往往input文本输入框会记录下之前提交表单的信息 以后每次只要双击 input文本输入框就会出现之前输入的文本 这样有时会觉得比较方便 但有时也会暴露用户的隐藏数据 所以
  • 如何在Windows打造出你的Linux开发环境

    在这篇文章里 我将向大家分享一些软件安装和环境设置方法 这是我最近的实践收获 并对使用效果非常满意 我不能永远待在Linux上开发 但我非常喜欢Linux终端和Linux环境 在开发一些开源软件时 Linux会让我感觉所有的事情变得更容易
  • uniapp的入栈出栈

    uniapp管理页面是利用栈的形式管理 因此多次入栈不出栈会造成页面的卡顿 入栈出栈的顺序不对 会在返回的时候不能回到对应页面 都是因为出栈入栈的时机不对造成的 一个页面会在什么时候进行入栈 又在什么时候出栈 他们分别触发了什么生命周期 这
  • Latex关键词(key words)的基本格式代码(加粗、斜体、空白行+首段空两格)

    Latex关键词 key words 的基本格式指令 加粗 斜体 空白行 首段空两格 在用英文写report或reference时keywords是必不可少的 Abstract和keywords这种简单的指令直接套用固定的格式模板就行 根据
  • docker构建国内镜像服务

    在国内想要下载镜像比较困难 因此很多公司都构建自己的私有仓库 如何搭建私有仓库 请参考 docker私有仓库从无到有 然而即使私有仓库服务构建完成 但是里面没有镜像 一样很苦恼 今天介绍一下如何利用国内云服务商提供的镜像加速器 来快速下载镜
  • Python中pymssql 的使用操作

    在python3 x中 可以使用pymysql来MySQL数据库的连接 并实现数据库的各种操作 本次博客主要介绍了pymysql的安装和使用方法 PyMySQL的安装 一 windows上的安装方法 在python3 6中 自带pip3 所
  • Entity Framework Core系列教程-25-Entity Framework Core日志

    Entity Framework Core日志 我们经常需要在EF Core中记录SQL并更改跟踪信息以进行调试 EF Core日志记录自动与 NET Core的日志记录机制集成 因此 在隐含使用EF Core的日志记录之前 了解有关 NE
  • SpringBoot第16讲:如何生成接口文档之Swagger技术栈

    SpringBoot第16讲 如何生成接口文档之Swagger技术栈 SpringBoot开发Restful接口 有什么API规范吗 如何快速生成API文档呢 Swagger 是一个用于生成 描述和调用 RESTful 接口的 Web 服务
  • `算法知识` 笛卡尔坐标系, 边长与边权, 曼哈顿距离, 欧几里得距离,外接矩形

    catalog 图像引用 图一 图二 笛卡尔坐标系的 边长 与 边权 曼哈顿距离 曼哈顿边权 与 欧几里得距离 的转换 凸多边形的曼哈顿周长 与 外接矩形的欧几里得周长 例题 ID COUNT 4 跳转链接已经使用了 0 ID COUNT
  • kali中binwalk/foremost/zip2john工具的配合使用

    kali中binwalk foremost zip2john工具的配合使用 背景 通过binwalk工具观察该文件是否包含其他文件 通过foremost工具将隐藏文件提取出来 通过zip2john工具破解压缩包的密码 心得体会 背景 最近参
  • 魏副业而战:开学季,闲鱼卖什么好?

    我是魏哥 与其躺平 不如魏副业而战 现在八月底了 意味着暑假结束 新的学期将要开始 作为闲鱼卖家 可顺势布局一下 那卖什么好呢 开学季嘛 卖学习相关的 例如 文具 书包 练习本 教辅书籍等等 只要和学生相关的都可以的 另外 有些大学生可能会
  • oracle 连接串解释

    工作中 oracle环境 常常通过连接串描述 scott 123456 DESCRIPTION ADDRESS PROTOCOL TCP HOST 192 168 206 100 PORT 1521 CONNECT DATA SERVER
  • 小孩学机器人编程怎么样

    小孩学机器人编程怎么样 孩子的学习从古至今都是家长们十分关心和重视的一件事情 很多的家长在培养孩子的学习方面也是相当耐心的 就拿现在很多的家长想要孩子去学习机器人编程的课程来说 他们对于小孩学机器人编程怎么样并不是很清楚 今天我们就一起来了
  • sqli-labs靶场Less-3

    1 访问首页 index php id 1 这里的传参点是id 2 判断注入点是数字还是字符 如果是字符就需要闭合 and 1 1 qwe and 1 2 qwe 分析 通过以上探测发现并不起效果 考虑是不是和第一关一样需要单引号闭合 再次
  • 如何用一根网线实现在两台电脑之间传输数据

    下面我来说一说怎样用一根网线连接两台电脑 从而实现数据的传输 首先 我们要在两台电脑上分别设置其IPv4的配置 第一台电脑的设置步骤如下 打开网络和共享中心 点击更改设配器设置 在以太网那里右键属性 双击Internet 协议版本4 TCP
  • logstash多任务多管道pipeline配置启动,方案分析

    文章目录 6 0以下方案 6 0以下方案分析 启动方式 6 0以上方案 启动方式 6 0以下方案 logstash处理多个输入输出源方案 没有使用多管道 两个任务 jdbc demo 手写自定义mysql conf input stdin
  • keil调试GD32E23系列芯片找不到 j-link问题解决

    背景 今年因为疫情 下半年芯片疯涨 公司各个产品的芯片都比较紧缺 原来使用的芯片都为st和华大公司的芯片 价格还好 都不超过五块 现在拿货 st芯片价格已经涨了30块左右 吃不消 遂开始加紧开发国内的芯片 目录 一 问题 二 问题可能的根源
  • redis教程

    Redis和tp使用 类型 支持多种数据结构类型 包括string 字符串 hash 哈希 list 链表 set 无序集合 Zset 有序集合 Redis能读的速度是110000次 s 写的速度是81000次 s Redis所有单个命令的