当前位置: 首页 > news >正文

Redis基础特性及应用练习-php

redis持久化(persistence)

redis支持两种方式的持久化,可以单独使用或者结合起来使用。

第一种:RDB方式(redis默认的持久化方式)

rdb方式的持久化是通过快照完成的,当符合一定条件时redis会自动将内存中的所有数据执行快照操作并存储到硬盘上。默认存储在dump.rdb文件中。(文件名在配置文件中dbfilename)
redis进行快照的时机(在配置文件redis.conf中)

save 900 1  //表示900秒内至少一个键被更改则进行快照。
save 300 10  //表示300秒内10条被更改则快照
save 60 10000  //60秒内10000条

第二种:AOF方式

aof方式的持久化是通过日志文件的方式。默认情况下redis没有开启aof,可以通过参数appendonly参数开启。

appendonly yes

aof文件的保存位置和rdb文件的位置相同,都是dir参数设置的,默认的文件名是appendonly.aof,可以通过appendfilename参数修改

appendfilename appendonly.aof

redis写命令同步的时机

appendfsync always 每次都会执行
appendfsync everysec 默认 每秒执行一次同步操作(推荐,默认)
appendfsync no不主动进行同步,由操作系统来做,30秒一次

宝塔设置:
在这里插入图片描述

redis中键的生存时间(expire)

class Myredis{protected $redis;public function __construct() {//实例化Redis类$redis = new Redis();//选择指定的redis数据库连接,默认端口号为6379$redis->connect('127.0.0.1',6379);$this->redis = $redis;}public function expire(string $name,int $expire){$this->redis->expire($name, $expire);// $redis->ttl(‘foo’); //返回有效期值1s// $redis->expire(‘foo’); //取消expire行为}
}
$redis = new Myredis();
$redis->expire("name",10);	//(单位/秒)

redis的事务(transaction)

    public function transaction(){//Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。/**//1 Redis事务没有隔离级别$this->redis->multi();$this->redis->decrby("number",10);//发送 EXEC 命令前被放入队列缓存,并不会被实际执行,也就不存在事务内的查询要看到事务里的更新,事务外查询不能看到。if($this->redis->get("number") < 0){return $this->redis->discard();}$this->redis->incrby("number2",10);$this->redis->exec();	//number:-10, number2:10*//**//2 Redis不保证原子性//Redis中,单条命令是原子性执行的,但事务不保证原子性,且没有回滚。事务中任意命令执行失败,其余的命令仍会被执行。$this->redis->multi();$this->redis->decrby("number",10);$this->redis->incrby("number2",10,21,321);	//err$this->redis->incrby("number3",10);$this->redis->exec(); //number:-10, number3: 10//Redis中,单条命令是原子性执行的,但事务不保证原子性,且没有回滚。*/// Watch 命令用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断$this->redis->watch('number');sleep(10);	//期间改掉number,下面的命令都不会执行$this->redis->multi();$this->redis->set('favorite_fruit','cherry');$this->redis->incrBy('number',3);$this->redis->exec();}$redis->transaction();

发布/订阅

//调用
public function Publish_Subscribe(){//通过订阅/发布,添加数据库数据。 tb_people表$channelName = "tb_people";//向指定频道发送消息try {$redis = new Redis();$redis->connect('127.0.0.1', 6379);for ($i=0;$i<5;$i++){$data = array('name' => 'key'.$i);$ret = $redis->publish($channelName, json_encode($data));print_r($ret);}} catch (Exception $e){echo $e->getMessage();}
}

xxxx.php:单独起个php文件,订阅信息

<?php
//设置php脚本执行时间
set_time_limit(0);
//设置socket连接超时时间
ini_set('default_socket_timeout', -1);$servername = "localhost";
$username = "root";
$password = "root";
try {$conn = new PDO("mysql:host=$servername;dbname=my_mysql;port=3306", $username, $password);// echo "连接成功";
}catch(PDOException $e){echo $e->getMessage();
}//声明测试频道名称
$channelName = "tb_people";
try {$redis = new Redis();//建立一个长链接$redis->pconnect('127.0.0.1', 6379);//阻塞获取消息$redis->subscribe(array($channelName), function ($redis, $chan, $msg) use($conn){// echo "channel:".$chan.",message:".$msg."\n";$arr_msg = json_decode($msg,true);$sqlquery = "INSERT INTO tb_people (name) VALUES ('".$arr_msg['name']."')";$conn->query($sqlquery);echo "成功";});
} catch (Exception $e){echo $e->getMessage();
}
mysql_close($con);

相关文章:

Redis基础特性及应用练习-php

redis持久化&#xff08;persistence&#xff09; redis支持两种方式的持久化&#xff0c;可以单独使用或者结合起来使用。 第一种&#xff1a;RDB方式&#xff08;redis默认的持久化方式&#xff09; rdb方式的持久化是通过快照完成的&#xff0c;当符合一定条件时redis会自…...

Numpy知识点回顾与学习

Numpy知识点回顾与学习 什么是Numpy&#xff1f; Numpy使用Python进行科学计算的基础包。因为机器学习当中很多都会用到数组、线性代数等知识&#xff0c;经常需要和数组打交道&#xff0c;所以Numpy学习成为了科研之路上必须掌握的一门技能。Numpy包含以下的内容&#xff1a…...

H.264视频编码推荐的分辨率和码率配置表

Video Encoding Settings for H.264 Excellence 针对H.264编码格式&#xff0c;根据不同分辨率&#xff0c;推荐其对应的码率配置关系如下图所示&#xff1a; 如下为上限&#xff0c;超过这个上限再增加码率基本无太大意义&#xff01;根据业务场景、帧率&#xff0c;建议码率…...

Greenplum 实用工具-gpaddmirrors

注&#xff1a;本文翻译自https://docs.vmware.com/en/VMware-Greenplum/7/greenplum-database/utility_guide-ref-gpaddmirrors.html gpaddmirrors工具用于向未配置镜像的Greenplum数据库系统添加镜像segment。 语法 gpaddmirrors [-p <port_offset>] [-m <datadi…...

详解 Cent OS JDK 8.0 安装配置

环境配置 云服务器云耀云服务器L操作系统CentOS 7.9 64bit | 公共镜像JDK版本64 bit JDK 1.8 下载地址 JDK官网下载地址Java Downloads | Oraclehttps://www.oracle.com/java/technologies/downloads/#java8百度网盘 ARM64 链接&#xff1a;https://pan.baidu.com/s/1wQ1mp…...

代理IP与网络安全在跨境电商中的关键作用

跨境电商已成为全球商业的重要组成部分&#xff0c;然而&#xff0c;随之而来的网络安全问题也日益凸显。为了在海外市场取得成功&#xff0c;不仅需要优质的商品和服务&#xff0c;还需要稳定、安全的网络连接。本文将介绍如何运用Socks5代理IP技术解决这些挑战。 1. 代理IP与…...

Kafka3.0.0版本——消费者(消费方式)

目录 一、Kafka 消费方式1.1、pull&#xff08;拉&#xff09; 模式1.2、push &#xff08;推&#xff09;模式1.3、Kafka采用pull&#xff08;拉&#xff09; 模式缺点 一、Kafka 消费方式 1.1、pull&#xff08;拉&#xff09; 模式 consumer采用从broker中主动拉取数据。K…...

uni-app rich-text组件富文本图片展示不全问题

背景&#xff1a;phpfastadmin富文本插件上传富文本内容到数据库&#xff0c;uni-app渲染富文本内容。这里后端不需要特殊处理。uni-app的rich-text组件展示图片跑板。直接贴代码。 <template><view><title-bar title"会员动态" back backcolor"…...

文件包含漏洞学习小结

目录 一、介绍 二、常见文件包含函数 三、文件包含漏洞代码举例分析 四、文件包含漏洞利用方式 4.1 本地文件包含 1、读取敏感文件 2、文件包含可运行的php代码 ①包含图片码 ②包含日志文件 ③包含环境变量getshell ④临时文件包含 ⑤伪协议 4.2 远程文件包含 4.…...

同时安装python2和3解决方案

我先安装python3后&#xff0c;按照网上步骤&#xff0c;继续安装好python2&#xff0c;直接运行python -v只能显示python2&#xff0c;运行python3找不到此命令&#xff0c;通过https://blog.csdn.net/qq_64409509/article/details/131514944这篇文章找到了解决方案&#xff0…...

通过jr-qrcode生成二维码并下载到客户端本地(Vue)

生成二维码 首先生成二维码图片的地址 引入jr-qrcode import jrQrcode from jr-qrcode; 生成二维码图片的地址 // 生成二维码地址 getQRCodeUrl(spreadUrl) {const QRCodeUrl jrQrcode.getQrBase64(spreadUrl);return QRCodeUrl; }that.backUrl jrQrcode.getQrBase64(da…...

命令执行漏洞(附例题)

一.原理 应用有时需要调用一些执行系统命令的函数&#xff0c;如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等&#xff0c;当用户能控制这些函数的参数时&#xff0c;就可以将恶意系统命令拼接到正常命令中&#xff0c;从而造成命令执行攻击。 二.利用条…...

iOS开发Swift-类型转换

1.Int或Double转字符串 let x 20 let y "\(x)" let z String(x)2.Double转Int(去掉小数点后面的) Int(1.9)3.Int转Double Double(1)4.向上转型 class A{//A父类 }class B: A{//B子类继承A }let a A() let b B()b as A //子类转化成父类5.向下转型 class A{//A…...

python基础爬虫反爬破解

文章目录 爬虫初识1. HTTP协议与WEB开发&#xff08;1&#xff09;简介&#xff08;2&#xff09;socket套接字&#xff08;3&#xff09;请求协议与响应协议 2. requests&反爬破解&#xff08;1&#xff09;UA反爬&#xff08;2&#xff09;referer反爬&#xff08;3&…...

Maven 必备技能:MAC 系统下 JDK和Maven 安装及环境变量配置详细讲解

开发中难免因系统问题或者版本变更反复折腾JDK和Maven环境变量&#xff0c;干脆写个笔记备忘个&#xff0c;也方便小伙伴们节省时间。 JDK安装与环境变量配置 1.官网下载jdk mac安装包: Java Downloads | Oracle " https://www.oracle.com/java/technologies/downloads…...

electron笔记无边框窗口、DLL调用、DLL函数返回指针

无边框 const win new BrowserWindow({width: 1290,height: 736,minHeight: 736,minWidth: 1040,maxHeight: 736,maxWidth: 1290,frame: false, // 无边框webPreferences: {// preload: process.env.WEBPACK_DEV_SERVER_URL ? __dirname /preload.js : app://./preload.js,…...

递归算法学习——黄金矿工,不同路径III

目录 ​编辑 一&#xff0c;黄金矿工 1.题意 2.题目分析 3.题目接口 4.解题思路及代码 二&#xff0c;不同路径III 1.题意 2.解释 3.题目接口 4.解题思路及代码 一&#xff0c;黄金矿工 1.题意 你要开发一座金矿&#xff0c;地质勘测学家已经探明了这座金矿中的资源…...

pg 创建分区表 --chatGpt

问&#xff1a;postgreSql 创建表 addresses&#xff08;id,mkey,pri,addr),其中 id自增且id值会超过上百亿&#xff0c;mkey长度为8且唯一的字符串&#xff0c;pri长度64的字符串,addr长度64的字符串,用散列分区的方式创建 gpt: 你可以使用 PostgreSQL 来创建一个包含散列分…...

长城网络靶场,第一题笔记

黑客使用了哪款扫描工具对论坛进行了扫描&#xff1f;&#xff08;小写简称&#xff09; 第一关&#xff0c;第三小题的答案是awvs 思路是先统计查询 然后过滤ip检查流量 过滤语句&#xff1a;tcp and ip.addr ip 114.240179.133没有 第二个101.36.79.67 之后找到了一个…...

el-form表单中不同数据类型对应的时间格式化和校验规则

1. 在表单中, 当选择不同的数据类型时, 需要在下面选择时间时和数据类型对应上, 通过监听数据类型的变化, 给时间做格式化, 2. 但是当不按顺序选择数据类型后, 再选时间可能会报错, 所以需要在dom更新后, 再清空表单. 3. 校验规则, 结束时间需要大于开始时间, 但是不能选当前的…...

RTX 5090功耗传闻解析:600W显卡对PC生态的挑战与应对

1. 项目概述&#xff1a;从一则功耗新闻到显卡生态的深度思考最近&#xff0c;英伟达下一代旗舰显卡RTX 5090的功耗传闻在硬件圈里炸开了锅。消息称其TGP&#xff08;总图形功耗&#xff09;可能高达600W&#xff0c;相比RTX 4090的450W&#xff0c;直接激增了150W。这不仅仅是…...

CircuitPython串口调试与REPL交互:嵌入式开发的效率倍增器

1. 项目概述&#xff1a;为什么串口交互是嵌入式开发的“生命线”如果你刚开始接触CircuitPython或者任何基于微控制器的嵌入式开发&#xff0c;可能会觉得写代码、上传、看结果这个过程有点“黑盒”。代码上传后&#xff0c;板子默默运行&#xff0c;除了闪烁的LED&#xff0c…...

2026年好用的图片去水印工具有哪些?图片去水印工具推荐盘点

2026年好用的图片去水印工具有哪些&#xff1f;图片去水印工具推荐盘点 说实话&#xff0c;水印虽然能保护原创&#xff0c;但有时候我们也需要对自己拍摄或拥有版权的图片进行处理。比如拍了张好看的图&#xff0c;却被平台的logo挡住了关键部分&#xff1b;或者想要把多个平…...

别再拍脑袋定样本量了!用Excel 5分钟搞定市场调研的样本容量计算(附置信区间模板)

别再拍脑袋定样本量了&#xff01;用Excel 5分钟搞定市场调研的样本容量计算&#xff08;附置信区间模板&#xff09; 在快节奏的商业决策中&#xff0c;市场调研的可靠性往往取决于一个关键数字——样本量。产品经理小张最近就踩了坑&#xff1a;耗时两周完成的500份用户问卷&…...

解放你的文档下载焦虑:一键保存30+平台内容的神器

解放你的文档下载焦虑&#xff1a;一键保存30平台内容的神器 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档&#xff0c;但是相关网站浏览体验不好各种广告&#xff0c;各种登录验证&#xff0c;需要很多步骤才能下载文档&#xff0c;该脚本就是为了解决您…...

树莓派BlueZ源码编译安装与蓝牙协议栈深度配置指南

1. 项目概述与背景 如果你手头有一块树莓派&#xff0c;并且想用它来玩点物联网或者智能硬件项目&#xff0c;蓝牙功能几乎是绕不开的一环。无论是连接一个BLE温湿度传感器读取数据&#xff0c;还是控制一个蓝牙音箱&#xff0c;底层都需要一个稳定、功能完整的蓝牙协议栈来支…...

UPS Ground运输时间估算:从纽约10013到全美各区域的实操指南

1. 物流时间估算的核心价值与挑战在电商和供应链的世界里&#xff0c;时间就是金钱&#xff0c;而运输时间则是连接承诺与现实的桥梁。无论是作为卖家管理客户预期&#xff0c;还是作为买家规划项目进度&#xff0c;一个相对准确的运输时间预估都至关重要。UPS Ground作为美国境…...

峰值电流模式控制中传播延迟的功率影响与补偿方案

1. 项目概述&#xff1a;直面峰值电流模式控制的“功率之殇”做电源设计&#xff0c;尤其是反激式开关电源&#xff0c;有一个场景大家肯定都遇到过&#xff0c;而且非常头疼&#xff1a;你的电源在最低输入电压&#xff08;比如85VAC&#xff09;下&#xff0c;各项指标都调得…...

跨越平台鸿沟:Simulink、VeriStand与LabVIEW联合仿真环境一站式部署指南

1. 为什么需要联合仿真环境&#xff1f; 在工业自动化和科研领域&#xff0c;我们经常遇到一个尴尬的局面&#xff1a;不同团队使用的工具链完全不同。控制算法工程师习惯用Simulink建模&#xff0c;测试工程师依赖LabVIEW开发上位机&#xff0c;而硬件在环&#xff08;HIL&am…...

从‘尺子刻度’到‘信号保真’:用Python仿真带你直观理解ADC的INL、DNL和SNDR到底在说什么

从‘尺子刻度’到‘信号保真’&#xff1a;用Python仿真带你直观理解ADC的INL、DNL和SNDR到底在说什么 在数字信号处理的世界里&#xff0c;模数转换器(ADC)扮演着将连续模拟信号转换为离散数字信号的关键角色。但对于许多软件开发者或跨领域学习者来说&#xff0c;ADC的性能参…...