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

redis 从小白到大师系列

字符串

Redis 字符串数据类型

  1. set 字符串
/*** 设置字符串*/
$t = $redis->set('o1','o1');
//返回true or false
var_dump($t);
  1. get字符串
/*** 获取字符串*/
$t = $redis->get('o1');
//返回true or false
var_dump($t);

结果:
string(2) “o1”

  1. 返回 key 中字符串值的子字符 getrange
/*** 已存字符串:abcdefghijklmo* 获取string  getRange 获取存储在指定 key 中字符串的子字符串*/
$geRange = $redis->getRange('k1',0,-1);
var_dump($geRange);

结果:
string(14) “abcdefghijklmo”

  1. getSet 将给定 key 的值设为 value ,并返回 key 的旧值(old value)
$getSet = $redis->getSet('k1','AAABBBCCCDDD');
var_dump($getSet);

结果:
string(14) “abcdefghijklmo”

  1. 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) }

  1. 批量设置string
/*** 批量设置*/
$arr = [];
$arr['a1'] = 'v11';
$arr['a2'] = 'v22';
$arr['a3'] = 'v33';
$arr['a4'] = 'v44';
$res = $redis->mset($arr);
var_dump($res);

结果
bool(true)
在这里插入图片描述

  1. 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)
  1. 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);
  1. strlen 返回 key 所储存的字符串值的长度
/*** strlen 返回 key 所储存的字符串值的长度。*/$strlen = $redis->strlen('setnx');
var_dump($strlen);

结果:
int(6)

  1. 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);

/**

  1. Incrbyfloat 命令
/*** Incrby 命令和incr一样,只是需要自定义步长*/
$res = $redis->incrByFloat("Incrbyfloat_name1",2.55);
var_dump($res);

结果:
float(2.55)

  1. Decr 命令
    Redis Decr 命令将 key 中储存的数字值减一。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。

/*** Incrby 命令和incr一样,只是需要自定义步长*/
$res = $redis->decr("incr_name");
var_dump($res);

结果:
一直减一会出现负数
int(1)
int(-10)

  1. Decrby 命令
/*** decrBy 命令和incr一样,只是需要自定义步长*/
$res = $redis->decrBy("incr_name",2);
var_dump($res);
  1. 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多亿)。

  1. 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

在这里插入图片描述

  1. 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” }

  1. 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) "西安市未央区吕小寨"
}
  1. 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);

在这里插入图片描述

  1. Hexists 命令用于查看哈希表的指定字段是否存在。
$res = $redis->hExists('hset_key3','user_id');
var_dump($res);

如果没有hash_key ,则返回false,
如果有hash_key ,则返回true,
在这里插入图片描述

  1. Hincrby 命令 用于为哈希表中的字段值加上指定增量值。
    Redis Hincrby 命令用于为哈希表中的字段值加上指定增量值。
    增量也可以为负数,相当于对指定字段进行减法操作。
    如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
    如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
    对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。
    本操作的值被限制在 64 位(bit)有符号数字表示之内。
在这里插入代码片

增加前user_age
在这里插入图片描述
增加后user_age
在这里插入图片描述

  1. 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构建的客户端应用的框架,用来构建单页面应用程序。是一个重量级的框架,内部集成了大量开箱即用的功能模块。是为大型应用开发而设计&#xf…...

字符串划分

题目描述 给定一个小写字母组成的字符串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)也是一项非常基础的任务,图像分割、物体追踪、关键点检测等通常都要依赖于目标检测。在目标检测时,由于每张图像中物体的数量、…...

你的ESP32项目还缺个BGM?手把手教你做个可切换歌单的迷你音乐播放器

为ESP32项目打造智能音乐模块:从蜂鸣器驱动到歌单管理系统 当你的智能家居设备在清晨用一段舒缓旋律唤醒你,或是机器人完成指令时播放一段俏皮的提示音,这种交互体验会瞬间提升产品的温度。ESP32作为一款功能强大的物联网芯片,完全…...

你的RAG应用安全吗?藏在向量数据库里的‘特洛伊木马’——外部数据注入风险详解

RAG应用安全深度剖析:如何抵御外部数据源中的"特洛伊木马" 当你在咖啡馆用手机查看银行账户时,是否想过那个看似无害的二维码可能藏着窃取密码的指令?类似的威胁正在AI领域上演——攻击者通过污染RAG(检索增强生成&…...

Windows下OpenClaw极简安装:Qwen3.5-9B-AWQ-4bit镜像10分钟体验

Windows下OpenClaw极简安装:Qwen3.5-9B-AWQ-4bit镜像10分钟体验 1. 为什么选择这个组合? 最近在折腾本地AI自动化时,发现很多工具要么配置复杂,要么对硬件要求太高。直到遇到OpenClawQwen3.5-9B-AWQ-4bit这个组合,才…...

OpenClaw批量处理:用SecGPT-14B同时分析百个可疑文件

OpenClaw批量处理:用SecGPT-14B同时分析百个可疑文件 1. 为什么需要批量安全分析 去年处理一个恶意软件分析项目时,我遇到了一个典型困境:手头有237个待分析样本,每个都需要执行基础静态分析、行为特征提取和威胁评分。如果手动…...

SegFormer实战:5分钟搞定ADE20K数据集上的语义分割(附完整代码)

SegFormer实战指南:ADE20K语义分割从零精解 在计算机视觉领域,语义分割技术正经历着前所未有的革新。ADE20K作为场景解析的标杆数据集,包含了150个精细标注的语义类别,成为检验算法实力的试金石。本文将带您深入SegFormer这一轻量…...

2-3 上下文管理:让AI真正“看懂“你的项目

你有没有遇到过这种情况: 同一个AI编程工具,在Project A里表现得像个资深架构师,能准确遵循项目规范、理解业务逻辑;到了Project B,却像个刚毕业的新手,写出完全不符合规范的代码,甚至提出违背项目基础设计的修改建议。 差距在哪里? 答案:上下文管理(Context Mana…...

从Claude Code代码泄漏到AI Agent逻辑设计VS龙虾OpenClaw

近期 Anthropic的Claude Code 的源码泄露事件,为业界提供了一份价值连城的“活体解剖指南”。本文将深入对比高内聚的 Claude Code 架构与高解耦的 OpenClaw 通用框架,从系统执行逻辑、上下文管理、OS 沙盒交互以及记忆提纯等维度,探讨次世代 AI Agent 在模型推理与工程落地…...

OpenClaw性能调优:Qwen3-14B镜像响应速度提升3倍实操

OpenClaw性能调优:Qwen3-14B镜像响应速度提升3倍实操 1. 为什么需要性能调优? 上周我在用OpenClaw自动处理100份PDF文档时,发现一个奇怪现象:同样的任务,晚上执行比白天快得多。经过排查才发现,白天我的本…...

I2C总线原理与嵌入式系统应用实践

1. I2C总线基础解析I2C(Inter-Integrated Circuit)总线是Philips半导体(现NXP)在1982年推出的双线制串行通信协议。作为一名电子工程师,我在多个嵌入式项目中都深度使用过这种总线。它的精妙之处在于仅用两根线&#x…...

字节跳动开源Coze后,个人开发者如何快速上手?保姆级教程来了

字节跳动开源Coze实战指南:从零构建AI智能体的完整路径 当字节跳动宣布将Coze平台全面开源时,整个开发者社区为之振奋。这个被称作"AI智能体全栈工厂"的平台,如今终于揭开了神秘面纱,让个人开发者能够深入探索其技术内核…...