007、字符串_命令

2024-05-27 11:12
文章标签 命令 字符串 007

本文主要是介绍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"

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

在这里插入图片描述

这篇关于007、字符串_命令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1007308

相关文章

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

C++字符串提取和分割的多种方法

《C++字符串提取和分割的多种方法》在C++编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时,本文将详细探讨如何使用C++标准库中的工具来提取和分割字符串,并分析不同方法的适用... 目录1. 字符串提取的基本方法1.1 使用 std::istringstream 和 >> 操作符示

Linux find 命令完全指南及核心用法

《Linuxfind命令完全指南及核心用法》find是Linux系统最强大的文件搜索工具,支持嵌套遍历、条件筛选、执行动作,下面给大家介绍Linuxfind命令完全指南,感兴趣的朋友一起看看吧... 目录一、基础搜索模式1. 按文件名搜索(精确/模糊匹配)2. 排除指定目录/文件二、根据文件类型筛选三、时间

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

使用mvn deploy命令上传jar包的实现

《使用mvndeploy命令上传jar包的实现》本文介绍了使用mvndeploy:deploy-file命令将本地仓库中的JAR包重新发布到Maven私服,文中通过示例代码介绍的非常详细,对大家的学... 目录一、背景二、环境三、配置nexus上传账号四、执行deploy命令上传包1. 首先需要把本地仓中要

Golang中拼接字符串的6种方式性能对比

《Golang中拼接字符串的6种方式性能对比》golang的string类型是不可修改的,对于拼接字符串来说,本质上还是创建一个新的对象将数据放进去,主要有6种拼接方式,下面小编就来为大家详细讲讲吧... 目录拼接方式介绍性能对比测试代码测试结果源码分析golang的string类型是不可修改的,对于拼接字