007、字符串_命令

字符串类型是Redis最基础的数据结构。首先键都是字符串类型,而且 其他几种数据结构都是在字符串类型基础上构建的,所以字符串类型能为其 他四种数据结构的学习奠定基础。
在这里插入图片描述

设置值

set key value [ex seconds] [px milliseconds] [nx|xx]
下面操作设置键为hello,值为world的键值对,返回结果为OK代表设置 成功:

127.0.0.1:6379> set hello world 
OK 

set命令有几个选项:
·ex seconds:为键设置秒级过期时间。
·px milliseconds:为键设置毫秒级过期时间。
·nx:键必须不存在,才可以设置成功,用于添加。
·xx:与nx相反,键必须存在,才可以设置成功,用于更新。

除了set选项,Redis还提供了setex和setnx(它们的作用和ex和nx选项是一样的。):

setex key seconds value 
setnx key value

当前键hello不存在:

127.0.0.1:6379> exists hello 
(integer) 0 

设置键为hello,值为world的键值对:

127.0.0.1:6379> set hello world 
OK 

因为键hello已存在,所以setnx失败,返回结果为0:

127.0.0.1:6379> setnx hello redis 
(integer) 0 

因为键hello已存在,所以set xx成功,返回结果为OK:

127.0.0.1:6379> set hello jedis xx 
OK

获取值

get key
下面操作获取键hello的值:

127.0.0.1:6379> get hello 
"world" 

如果要获取的键不存在,则返回nil(空):

127.0.0.1:6379> get not_exist_key 
(nil)

批量设置值

mset key value [key value …]
下面操作通过mset命令一次性设置4个键值对:

127.0.0.1:6379> mset a 1 b 2 c 3 d 4 
OK

批量获取值
mget key [key …]
下面操作批量获取了键a、b、c、d的值:

127.0.0.1:6379> mget a b c d 
1) "1" 
2) "2" 
3) "3" 
4) "4" 

如果有些键不存在,那么它的值为nil(空),结果是按照传入键的顺序返回:

127.0.0.1:6379> mget a b c f 
1) "1" 
2) "2" 
3) "3" 
4) (nil) 

批量操作命令可以有效提高开发效率,假如没有mget这样的命令,要执 行n次get命令需要按照图片方式来执行,具体耗时如下: n次get时间 = n次网络时间 + n次命令时间
在这里插入图片描述

使用mget命令后,要执行n次get命令操作只需要按照图2-9的方式来完 成,
具体耗时如下:n次get时间 = 1次网络时间 + n次命令时间
在这里插入图片描述

1000次get和1次get对比表

计数

incr key
incr命令用于对值做自增操作,返回结果分为三种情况:
·值不是整数,返回错误。
·值是整数,返回自增后的结果。
·键不存在,按照值为0自增,返回结果为1。
例如对一个不存在的键执行incr操作后,返回结果是1:

127.0.0.1:6379> exists key 
(integer) 0 
127.0.0.1:6379> incr key 
(integer) 1 

再次对键执行incr命令,返回结果是2:

127.0.0.1:6379> incr key 
(integer) 2 

如果值不是整数,那么会返回错误:

127.0.0.1:6379> set hello world 
OK 
127.0.0.1:6379> incr hello 
(error) ERR value is not an integer or out of range 

除了incr命令,Redis提供了decr(自减)、incrby(自增指定数字)、 decrby(自减指定数字)、incrbyfloat(自增浮点数):
decr key
incrby key increment
decrby key decrement
incrbyfloat key increment
很多存储系统和编程语言内部使用CAS机制实现计数功能,会有一定的 CPU开销,但在Redis中完全不存在这个问题,因为Redis是单线程架构,任 何命令到了Redis服务端都要顺序执行。

追加值

append key value append
可以向字符串尾部追加值,例如:

127.0.0.1:6379> get key 
"redis" 
127.0.0.1:6379> append key world 
(integer) 10 
127.0.0.1:6379> get key 
"redisworld"

字符串长度

strlen key
例如,当前值为redisworld,所以返回值为10:

127.0.0.1:6379> get key "redisworld" 
127.0.0.1:6379> strlen key (integer) 
10 

下面操作返回结果为6,因为每个中文占用3个字节:

127.0.0.1:6379> set hello "世界" 
OK 
127.0.0.1:6379> strlen hello (integer) 
6 

设置并返回原值

getset key value
getset和set一样会设置值,但是不同的是,它同时会返回键原来的值, 例如:

127.0.0.1:6379> getset hello world 
(nil) 
127.0.0.1:6379> getset hello redis 
"world" 

设置指定位置的字符

setrange key offeset value
下面操作将值由pest变为了best:

127.0.0.1:6379> set redis pest 
OK 
127.0.0.1:6379> setrange redis 0 b 
(integer) 4 
127.0.0.1:6379> get redis 
"best" 

获取部分字符串

getrange key start end start和end分别是开始和结束的偏移量,偏移量从0开始计算,例如下面 操作获取了值best的前两个字符。

127.0.0.1:6379> getrange redis 0 1 
"be"

字符串类型命令时间复杂度

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

json web token及JWT学习与探索

JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案 作用: 主要是做鉴权用的登录之后存储用户信息 生成得token(令牌)如下 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNjg3Njc0NDkyLCJleHAiOjE2ODc3NjA4OTJ9.Y6eFG…

go-zero 实战(1)

环境准备 go 版本 go version go1.22.2 linux/amd64 goctl 安装 goctl(官方建议读 go control)是 go-zero微服务框架下的代码生成工具。使用 goctl 可以显著提升开发效率,让开发人员将时间重点放在业务开发上,其功能有&#xff1a…

crossover玩游戏缺少文件怎么办 为什么游戏打开说缺失文件 crossover支持的游戏列表 CrossOver 提示 X 11 缺失怎么办?

CrossOver是一款类虚拟机软件,可以实现在Mac电脑上运行exe程序。不少Mac用户为了玩游戏,选择使用CrossOver这款软件玩Windows平台的游戏。 一、CrossOver支持的软件多吗 CrossOver是一款基于Wine的兼容工具,它可以让你在Mac或Linux上运行许多…

废品回收小程序:回收市场下的商业机遇

随着当下大众环保意识的提升,回收行业收到了大众的重视,行业快速发展。在互联网信息技术的支持下,“互联网废品回收”得到了发展,依靠各种技术搭建互联网回收平台,连接到居民与商家,让回收变得更加简单高效…

使用nvm管理node多版本(安装、卸载nvm,配置环境变量,更换npm淘宝镜像)淘宝的镜像域名更换

最近 使用nvm 管理 node 的时候发现nvm install node版本号 总是失败。 nvm install 20.12.2Error retrieving "http://npm.taobao.org/mirrors/node/latest/SHASUMS256.txt": HTTP Status 404查看原因,因为淘宝的镜像域名更换,由于 npm.taob…

【C++算法】BFS解决多源最短路问题相关经典算法题

1.01矩阵 既然本章是BFS解决多源最短路问题,也就是说有若干个起点,那我们就可以暴力一点,直接把多源最短路径问题转化成若干个单源最短路径问题,然后将每次的步数比较一下,取到最短的就是最短路径的结果,这…

10. C++异步IO处理库和使用libevent实现高性能服务器

C比较有名的异步IO处理库 libevent 这个主要使用的是epoll。libevthplibuvlibev 我们主要介绍libevent。 libevent重要函数 event_base_new 这个可以对应于epoll_create也就是创建一个实例。还可以初始化libevent所有管理相关的代码。比如说所能用到的队列,栈&a…

【C++】牛客——活动安排

✨题目链接: AB31 活动安排 ✨题目描述 给定𝑛个活动,每个活动安排的时间为[𝑎𝑖,𝑏𝑖)。求最多可以选择多少个活动,满足选择的活动时间两两之间没有重合。 ✨输入描述: 第一行…

cesium绘制区域编辑

npm 安装也是可以的 #默认安装最新的 yarn add cesium#卸载插件 yarn remove cesium#安装指定版本的 yarn add cesium1.96.0#安装指定版本到测试环境 yarn add cesium1.96.0 -D yarn install turf/turf <template><div id"cesiumContainer"></div&…

4.Redis之Redis的通用命令

0.Redis 实战操作 通过 redis-cli 客户端和 redis 服务器交互 涉及到很多的 redis 的命令 【redis 的命令非常非常多!!! 1.掌握常用命令(多操作多练习) 2.学会使用 redis 的文档-> 阅读文档, 是程序猿的基操!! redis 的命令非常非常多!!! 1.掌握常用命令(多操作多练习…

使用 Django 显示表中的数据

1、问题背景 当我们使用 Django 进行 Web 开发时&#xff0c;经常需要在 Web 页面上显示数据库中的数据。例如&#xff0c;我们可能需要在一个页面上显示所有用户的信息&#xff0c;或者在一个页面上显示所有文章的标题和作者。那么&#xff0c;如何使用 Django 来显示表中的数…

手机里装上好用的实用工具,生活办公更轻松

手机里装上好用的实用工具&#xff0c;生活办公才更轻松&#xff01;~ 1.一个木函 安卓手机里的“工具百宝箱”&#xff0c;应用集成了超过100种实用工具&#xff0c;包括单位和汇率换算、查询、OCR图片文字识别、自动文章摘要、图片表格识别和表情制作等等。它提供了全面的多…

防火墙技术基础篇:NAT转发之——Smart NAT(No-PAT和NAPT结合)

防火墙技术基础篇&#xff1a;NAT转发之——Smart NAT&#xff08;No-PAT和NAPT结合&#xff09; 传统的NAT技术在处理大规模网络和复杂应用场景时存在一定的局限性。为了解决这些问题&#xff0c;一种名为Smart NAT的新型网络技术应运而生。本文将详细介绍Smart NAT的概念、原…

信息标记形式 (XML, JSON, YAML)

文章目录 &#x1f5a5;️介绍&#x1f5a5;️三种形式&#x1f3f7;️XML (Extensible Markup Language)&#x1f516;规范&#x1f516;注释&#x1f516;举例&#x1f516;其他 &#x1f3f7;️JSON (JavaScript Object Notation)&#x1f516;规范&#x1f516;注释&#x…

数据恢复:手机数据恢复,盘点7个有效手机恢复方法

你知道吗&#xff0c;超过 70% 的智能手机用户都曾有过数据丢失的经历&#xff1f;如果你曾经丢失过手机中的重要文件&#xff0c;别担心&#xff0c;本文有解决办法。在本文中&#xff0c;我们将告诉你如何使用简单的步骤恢复手机中丢失的数据。无论你是不小心删除了文件还是手…

java.lang.NumberFormatException: For input string:

创建SpringBoot&#xff0c;Mybatis的项目时候&#xff0c;Service层调用Mapper层时候爆出了一个错误 发现报错是一个类型转换错误&#xff0c;经过排查后发现是因为mapper接收的实体类中没有写空参构造

Python: 使用pyotp实现OTP一次性密码验证

使用pyotp实现OTP一次性密码验证 OTP的基本原理 生成一个共享秘钥作为随机数的种子服务端通过种子计算出当前的密码客户端也通过相同的种子计算出当前的密码验证客户端生成的密码和服务端生成的密码是否匹配 服务端和客户端计算的方式一样 共享密钥 时间因子 算法 > 密…

吴恩达深度学习笔记:超 参 数 调 试 、 Batch 正 则 化 和 程 序 框 架(Hyperparameter tuning)3.8-3.9

目录 第二门课: 改善深层神经网络&#xff1a;超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第三周&#xff1a; 超 参 数 调 试 、 Batch 正 则 化 和 程 序 框 架&#xff08;Hyperparameter …

线性插值的频域特性

1、抽取和插值的简单说明 抽取和插值是变采样过程中常用的两种手段&#xff0c;其中抽取的目的是降低数据的采样率&#xff0c;以降低对系统存储深度或计算量的要求。插值的目的是提高数据的采样率&#xff0c;以提高系统的计算精度。 M M M倍抽取通常是通过每隔 M M M…

全球首个AI代理驱动的元宇宙生态Wondra,让Web3再次伟大

前段时间&#xff0c;因为OpenAI的Sora发布、英伟达财报的发布&#xff0c;英伟达市值直逼2.5万亿美金&#xff0c;使得Crypto行业的AI赛道热度飙升&#xff0c;WLD&#xff0c;AGIX&#xff0c;FET等项目都有了不俗的表现。而这几天&#xff0c;因为大盘整体向好&#xff0c;再…