redis 从小白到大师系列
字符串
Redis 字符串数据类型
- set 字符串
/*** 设置字符串*/
$t = $redis->set('o1','o1');
//返回true or false
var_dump($t);
- get字符串
/*** 获取字符串*/
$t = $redis->get('o1');
//返回true or false
var_dump($t);
结果:
string(2) “o1”
- 返回 key 中字符串值的子字符 getrange
/*** 已存字符串:abcdefghijklmo* 获取string getRange 获取存储在指定 key 中字符串的子字符串*/
$geRange = $redis->getRange('k1',0,-1);
var_dump($geRange);
结果:
string(14) “abcdefghijklmo”
- getSet 将给定 key 的值设为 value ,并返回 key 的旧值(old value)
$getSet = $redis->getSet('k1','AAABBBCCCDDD');
var_dump($getSet);
结果:
string(14) “abcdefghijklmo”
- mget 命令返回所有(一个或多个)给定 key 的值。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil
/*** 批量获取 a100 不存在,所以未false*/
$mget = $redis->mget(['a1','a2','a100']);
结果:
array(3) { [0]=> string(3) “v11” [1]=> string(3) “v22” [2]=> bool(false) }
- 批量设置string
/*** 批量设置*/
$arr = [];
$arr['a1'] = 'v11';
$arr['a2'] = 'v22';
$arr['a3'] = 'v33';
$arr['a4'] = 'v44';
$res = $redis->mset($arr);
var_dump($res);
结果
bool(true)
- Setex 命令为指定的 key 设置值及其过期时间
/**
- Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值,如果不存在,则添加
*/
$res = r e d i s − > s e t e x ( ′ a 1 ′ , 30 , ′ a a a a ′ ) ; v a r d u m p ( redis->setex('a1',30,'aaaa'); var_dump( redis−>setex(′a1′,30,′aaaa′);vardump(res);
结果:
bool(true)
- Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。
/**
- Setnx 命令
*/
$res = r e d i s − > s e t n x ( ′ s e t n x ′ , ′ 你 好 ′ ) ; v a r d u m p ( redis->setnx('setnx','你好'); var_dump( redis−>setnx(′setnx′,′你好′);vardump(res);
在这里插入代码片
如果key setnx 不存在则设置成功,返回true
如果如果key setnx 存在,则返回false
结果:
bool(true)
可设置过期的NX
$res = $redis->set('setnx1','setnx1',['NX','EX'=>60]);
var_dump($res);
- strlen 返回 key 所储存的字符串值的长度
/*** strlen 返回 key 所储存的字符串值的长度。*/$strlen = $redis->strlen('setnx');
var_dump($strlen);
结果:
int(6)
- incr命令
Redis Incr 命令将 key 中储存的数字值增一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内
/*** Incr 命令将 key 中储存的数字值增一*/
$res = $redis->incr("incr_name");
var_dump($res);
结果:
int(1)
11. Incrby 命令和incr一样,只是需要自定义步长
* Incrby 命令和incr一样,只是需要自定义步长*/
$res = $redis->incrBy("incrby_name",2);
var_dump($res);
/**
- Incrbyfloat 命令
/*** Incrby 命令和incr一样,只是需要自定义步长*/
$res = $redis->incrByFloat("Incrbyfloat_name1",2.55);
var_dump($res);
结果:
float(2.55)
- Decr 命令
Redis Decr 命令将 key 中储存的数字值减一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。
/*** Incrby 命令和incr一样,只是需要自定义步长*/
$res = $redis->decr("incr_name");
var_dump($res);
结果:
一直减一会出现负数
int(1)
int(-10)
- Decrby 命令
/*** decrBy 命令和incr一样,只是需要自定义步长*/
$res = $redis->decrBy("incr_name",2);
var_dump($res);
- Append 命令
Redis Append 命令用于为指定的 key 追加值。
如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样
$v = "wo shi shui";
$temp = $redis->append('k1',$v); //返回该字符串的长度
$tmp = $redis->get('k1');
var_dump($temp);
var_dump($tmp);
int(34)
string(34) “AAABBBCCCDDDwo shi shuiwo shi shui”
Hash
Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
- hset 命令
Redis Hset 命令用于为哈希表中的字段赋值 。
如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
如果字段已经存在于哈希表中,旧值将被覆盖。
/*** hash hset*/
$res = $redis->hSet('hset_key','user_1','1');
var_dump($res);
返回值:
如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。
2. hmset() 批量插入
$arr['user_id'] = 1;
$arr['user_name'] = '李冰';
$arr['user_age'] = 100;
$arr['user_address'] = '西安市未央区吕小寨';
$res = $redis->hMSet('hset_key',$arr);
var_dump($res);
返回值:
true
- hget 命令用于返回哈希表中指定字段的值。
$hget = $redis->hGet('hset_key','user_name');
var_dump($hget);
返回值:
string(6) “李冰”
$res = $redis->hMGet('hset_key',['user_name','user_age1']);
var_dump($res);
array(2) { [“user_name”]=> string(6) “李冰” [“user_age”]=> string(3) “100” }
- HGETALL 获取在哈希表中指定 key 的所有字段和值
$res = $redis->hGetAll('hset_key');
var_dump($res);
返回值:
array(4) {["user_id"]=>string(1) "1"["user_name"]=>string(6) "李冰"["user_age"]=>string(3) "100"["user_address"]=>string(27) "西安市未央区吕小寨"
}
- hdel 命令
/*** Hdel 命令用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。*/$res = $redis->hDel('hset_key4','user_id');
var_dump($res);
返回值:
int(1)
删除user_id
前
删除user_id
后
删除多个hash_key
$res = $redis->hDel('hset_key3','user_id','user_name','user_address');
var_dump($res);
- Hexists 命令用于查看哈希表的指定字段是否存在。
$res = $redis->hExists('hset_key3','user_id');
var_dump($res);
如果没有hash_key ,则返回false,
如果有hash_key ,则返回true,
- Hincrby 命令 用于为哈希表中的字段值加上指定增量值。
Redis Hincrby 命令用于为哈希表中的字段值加上指定增量值。
增量也可以为负数,相当于对指定字段进行减法操作。
如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。
本操作的值被限制在 64 位(bit)有符号数字表示之内。
在这里插入代码片
增加前user_age
增加后user_age
- Redis Hincrbyfloat 命令用于为哈希表中的字段值加上指定浮点数增量值。
如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
$res = $redis->hIncrByFloat('hset_key_float','age',10.01);
var_dump($res);
返回值:
float(10.01)
相关文章:

redis 从小白到大师系列
字符串 Redis 字符串数据类型 set 字符串 /*** 设置字符串*/ $t $redis->set(o1,o1); //返回true or false var_dump($t);get字符串 /*** 获取字符串*/ $t $redis->get(o1); //返回true or false var_dump($t);结果: string(2) “o1” 返回 key 中字符串…...
vue使用.filter方法检索数组中指定时间段内的数据
假设你有一个名为dataArray的数组,其中包含了你要筛选的数据。那么,你可以按照以下步骤进行筛选: 创建一个名为filteredArray的新数组,用于存储筛选后的结果。使用数组的filter方法遍历dataArray,并对每个元素应用筛选…...

Ubuntu 安装 npm 和 node
前言 最近学习VUE,在ubuntu 2204 上配置开发环境,涉及到npm node nodejs vue-Cli脚手架等内容,做以记录。 一、node nodejs npm nvm 区别 ? node 是框架,类似python的解释器。nodejs 是编程语言,是js语言的…...

Matlab论文插图绘制模板第122期—函数折线图(fplot)
本期分享的是函数折线图的绘制模板。 所谓函数折线图,就是将自定义线函数进行可视化表达。 先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友请自行下载。有需要的朋友可以关注同名公号【阿昆的…...

IK分词器如何修改支持跨版本ES
一、问题描述:IK分词器版本和ES版本不一致,无法找到和自己ES版本匹配的分词器。 IK分词器,提供的插件版本,远赶不上ES的更新版本,在使用过程中,不一定能顺利的找到与自己使用的ES版本相对应。在ES集群中使用…...

Spring MVC常用十大注解
Spring MVC常用十大注解 一,什么要使用注解 使用注解可以简化配置,提高代码的可读性和可维护性。通过注解可以实现依赖注入,减少手动管理对象的代码量。注解还支持面向切面编程,实现切面、切入点和通知等。此外,注解提…...
二、【MyBatis】 MyBatis入门与简单使用
二、【MyBatis】 MyBatis入门与简单使用 二、【MyBatis】 MyBatis入门与简单使用一、什么是ORM二、为什么mybatis是半自动的ORM框架2.1 Hibernate优点2.2 Hibernate缺点2.3 MyBatis与Hibernate区别三、Mybatis快速入门3.1 项目引入Maven相关依赖3.2 创建测试数据库3.3 编写数据…...

基于DF模式的协作通信技术matlab性能仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、DF概述 4.2、DF基本原理 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2013b 3.部分核心程序 clc; clear; close all; warning off; addpath(genpath(pwd))…...
Angular-01:基本架构
各种学习后的知识点整理归纳,非原创! ① 概述 angular是一个使用HTML、CSS、TypeScript构建的客户端应用的框架,用来构建单页面应用程序。是一个重量级的框架,内部集成了大量开箱即用的功能模块。是为大型应用开发而设计…...
字符串划分
题目描述 给定一个小写字母组成的字符串s,请找出字符串中两个不同位置的字符作为分割点,使得字符串分成的三个连续子串且子串权重相等,注意子串不包含分割点。 若能找到满足条件的两个分割点,请输出这两个分割点在字符串中的位置…...
ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.9‘ not found的解决方法
导致该错误的原因:gcc动态库版本太老了 解决方法: 1、编辑~/.bash_profile vim ~/.bash_profile 2、将anaconda3/lib的路径加入库文件的路径 LD_LIBRARY_PATH/your_path/anaconda3/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH 3、重载~/.bash_pr…...

华为云全新上线Serverless应用中心,支持一键构建文生图应用
近日,华为云全新上线Serverless应用中心,提供了大量应用模板,让用户能够一键部署函数和周边依赖资源,节省部署时间,快速上手将应用部署到华为云函数计算FunctionGraph,并一键开通周边依赖资源。 本次Serve…...

scrapy的安装和使用
一、scrapy是什么:Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序 二、scrapy的安装:pip install scrapy -i https://pypi.douban.com/…...
Kotlin中的异常处理
异常是在程序执行过程中出现的错误或意外情况,可以干扰程序的正常流程。在Kotlin中,我们可以通过异常处理机制来捕获和处理异常,以保证程序的稳定性。本篇博客将介绍异常的产生、捕获、定义、受检异常和finally关键字,并提供相应的…...

[Ubuntu 18.04] 搭建文件夹共享之Samba服务器
Samba是一个开源项目,允许Windows用户在Linux和Unix系统上进行文件共享。 Samba服务器是一个可以让Linux或Unix系统在网络上充当Windows NT/2000/XP/2003等网络操作系统的共享资源的软件。它允许用户通过SMB/CIFS协议在Linux或Unix系统与Windows共享资源。 Samba服务器的主要…...
设计模式-装饰器模式
目录 设计模式-装饰器模式什么是装饰器设计模式?java示例 设计模式-装饰器模式 什么是装饰器设计模式? 装饰器设计模式(Decorator Pattern)是一种结构型设计模式,它允许你通过将对象包装在一个装饰器类中来动态地扩展…...
【Vs code调试C++】
参考文献第一个很重要 主要是配置task.json,其余的可以不用管 参考文献 [1]详解Linux下使用vscode编译运行和调试C/C [2]vscode关于C/C编译运行的一些小配置...
使用 C++创建一个简易的数据库管理系统 (DBMS)
在数据库领域,数据库管理系统 (DBMS) 是一个软件系统,它提供与用户、其他应用程序和数据库之间的接口,用于存储、检索、更新和管理数据。在这篇博客中,我们将学习如何使用 C 创建一个简易的 DBMS,包括事务、并发控制、…...

简单了解一下:NodeJS的WebSocket网络编程
NodeJS的webSocket网络编程。 那什么是WebSocket呢?WebSocket是HTML5提供的一种浏览器和服务器进行通信的网络技术。两者之间,只需要做一个握手动作,就可以在浏览器和服务器之间开启一条通道,就可以进行数据相互传输。 实现WebS…...

目标检测技术概述
什么是目标检测? 在计算机视觉众多的技术领域中,目标检测(Object Detection)也是一项非常基础的任务,图像分割、物体追踪、关键点检测等通常都要依赖于目标检测。在目标检测时,由于每张图像中物体的数量、…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

二叉树-144.二叉树的前序遍历-力扣(LeetCode)
一、题目解析 对于递归方法的前序遍历十分简单,但对于一位合格的程序猿而言,需要掌握将递归转化为非递归的能力,毕竟递归调用的时候会调用大量的栈帧,存在栈溢出风险。 二、算法原理 递归调用本质是系统建立栈帧,而非…...
MeanFlow:何凯明新作,单步去噪图像生成新SOTA
1.简介 这篇文章介绍了一种名为MeanFlow的新型生成模型框架,旨在通过单步生成过程高效地将先验分布转换为数据分布。文章的核心创新在于引入了平均速度的概念,这一概念的引入使得模型能够通过单次函数评估完成从先验分布到数据分布的转换,显…...