当前位置: 首页 > 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)也是一项非常基础的任务,图像分割、物体追踪、关键点检测等通常都要依赖于目标检测。在目标检测时,由于每张图像中物体的数量、…...

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...