redis 从小白到大师系列

news2024/10/5 18:28:43

字符串

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)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1124490.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

现在游戏出海有多少优势?

国内游戏市场趋于饱和,但是国外市场潜力仍然可观,因此很多人选择游戏出海,那么现在游戏出海有多少优势呢? 1、市场潜力 全球游戏市场潜力巨大,增长迅速。中国游戏公司具有强大的研发能力和创新能力,能够开…

【Java集合类面试一】、 Java中有哪些容器(集合类)?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:Java中有哪些容器&#…

xcode15一直显示正在连接iOS17真机问题解决

前言 更新xcode15之后,出现了各种报错问题,可谓是一路打怪啊,解决一个报错问题又来一个。没想到到了最后还能出现一个一直显示正在连接iOS17真机的问题 一直显示正在连接iOS17真机的问题 问题截图如下: 解决方法 1. 打开De…

“DDD创新”文章赏析-UMLChina建模知识竞赛第4赛季第16轮

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先答对前3题,即可获得本轮优胜。第4题为附加题,对错不影响优胜者…

MYSQL(索引+SQL优化)

索引: 索引是帮助MYSQL高效获取数据的排好序的数据结构 1)假设现在进行查询数据,select * from user where userID89 2)没有索引是一行一行从MYSQL进行查询的,还有就是数据的记录都是存储在MYSQL磁盘上面的,比如说插入数据的时候是向磁盘上面…

高效的 C++ JSON 解析、生成器 RapidJSON

简介 RapidJSON是一个高效的C JSON解析器和生成器。它专注于性能和易用性,使得处理JSON数据变得简单和快速。RapidJSON支持现代的JSON特性,如嵌套对象、数组、Unicode编码和注释。它的API简洁易用,可以轻松解析和生成JSON数据。无论你的项目需…

“菜鸟”程序员逆袭:独立开发iOS音乐应用,年底参加Amazon DeepRacer 全球锦标赛

“致一年前的小木土:任务完成。” 6月30日,在获得2023 Amazon DeepRacer自动驾驶赛车企业总决赛中国区冠军三天后的深夜,杜键文发了这条朋友圈,并配上比赛现场的9张图。 “小木土”是杜键文的网名,取其姓氏&#xff…

【【萌新的FPGA学习之水 一水到底 】】

萌新的FPGA学习之水 一水到底 重读实验给我印象最深的2点是我们面对的设计需要使得时序自动切换 那么我们将切换时序的时钟装入另一个每隔0.5s变换一次的参数上 下附上代码 module key_led(input sys_clk , //系统时钟input sys_rst_n , //系统复位,低电平有效 inp…

扩散模型学习——代码学习

文章目录 引言正文UNet网络结构训练方法DDPM采样方法讲解Context上下文信息添加DDIM的方法详解 总结参考 引言 这是第一次接触扩散模型,为了学习,这里好好分析一下他的代码 正文 UNet网络结构 这部分主要是定义一下网络结构,以及相关的网…

免费领取!TikTok Shop “全托管”黑五大促官方备战指南来啦!

黑五网一大促即将来袭,自“全托管”模式上线以来,TikTok for Business在沙特阿拉伯和英国市场开展了古尔邦节大促、夏季大促、返校季大促等活动,今年更是会借着黑五网一大促之际,首次覆盖美国市场,为全托管商家带来全球…

k8s的coreDNS添加自定义hosts

1.ack的hosts不会继承宿主机的hosts,而工作中有一个域名默认是走内网解析,内网被限制访问了,只能在coreDNS中加一个hosts解析域名 2.编辑configmap (coredns) kubectl edit configmap -n kube-system coredns 增加hosts节点 Corefile: |.:53…

由浅到深 : Self-Attention (自注意力机制)

Self-Attention 看到下面的第一个saw是动词,第二个saw是名词。 因为第一个saw和第二个saw在形式上没有任何差别。如果任务是进行词性的判断,把上面的词直接输入给神经网络,那么它肯定不能够正确分析。 想要正确分析词性,那么该…

谈谈你对Spring6.0的理解

谈谈你对Spring6.0的理解 一,介绍 Spring 6.0是Spring框架的一个重要版本,它提供了许多新特性和改进,以帮助开发者更高效地完成工作。以下是我对Spring 6.0的一些理解: 反应式编程支持:Spring 6.0对反应式编程提供了…

Pico示波器 汽车振动异响(NVH)解决方案

汽车振动异响故障可能有多个潜在原因,包括发动机、传动系统、悬挂系统、制动系统等等。技师需要对汽车各个方面有全面的了解,才能更好地进行故障排查。 振动和异响可能由多个因素引起。例如,可能是零部件损坏、松脱、磨损或者不正确安装。这…

ResNet: Deep Residual Learning for Image Recognition(CVPR 2015)

正常来说,plain网络(简单的堆叠层数)会随着网络的加深错误率变低的,但事实上训练和测试错误率都升高了,这就是网络的退化问题。 此外,网络加深会出现梯度消失或梯度爆炸,妨碍收敛,但…

HarmonyOS 音频开发指导:使用 AudioRenderer 开发音频播放功能

AudioRenderer 是音频渲染器,用于播放 PCM(Pulse Code Modulation)音频数据,相比 AVPlayer 而言,可以在输入前添加数据预处理,更适合有音频开发经验的开发者,以实现更灵活的播放功能。 开发指导…

node-sass安装报错

node-sass安装竟然报了python的错 先说最终解决方案 将node换成14版本 声明:个人总结,思路到哪写到哪,不喜请轻喷😂 参考 https://blog.csdn.net/ccm_2354586864 可恶的node-sass让我不得不在周末自愿加班😠 我的…

优化mybatisPlus批量新增,新增mapper层批量新增方法,附带代码生成vm模板。

文章目录 一、主题二、效果展示三、mybatis-plus源码分析四、优化思路五、代码优化方法一:修改批量新增SQL方法二:使用insertBatchSomeColumn 方法 一、主题 经发现,mybatisPlus只有Service中存在saveBatch()方法,而Mapper中不存在…

博客后台模块续更(五)

十一、后台模块-菜单列表 菜单指的是权限菜单,也就是一堆权限字符串 1. 查询菜单 1.1 接口分析 需要展示菜单列表,不需要分页。可以针对菜单名进行模糊查询。也可以针对菜单的状态进行查询。菜单要按照父菜单id和orderNum进行排序 请求方式 请求路径…

从0开始学云计算之服务器:服务的定义,特点,应用场景,分类

服务器定义 服务器是计算机的一种。它比普通计算机运行速度更快、负载更高且价格更高。 服务器的英文名称为“Server”,是指在网络上提供各种服务的高性能计算机。作为网络的节点,存储、处理网络上80%的数据、信息,因此也被称为x络的灵魂。 …