redis学习-String类型的命令介绍以及特殊情况分析

目录

[1. set key value](#1. set key value)

[2. get key](#2. get key)

[3. append key string](#3. append key string)

[4. strlen key](#4. strlen key)

[5. incr key 和 decr key](#5. incr key 和 decr key)

[6. incrby key num 和 decrby key num](#6. incrby key num 和 decrby key num)

[7. getrange key start end](#7. getrange key start end)

[8. setrange key start string](#8. setrange key start string)

[9. setex key time value](#9. setex key time value)

[10. setnx key value](#10. setnx key value)

[11. mset key1 value1 key2 value2 ...](#11. mset key1 value1 key2 value2 ...)

[12. mget key1 key2 ...](#12. mget key1 key2 ...)

[13. msetnx key1 value1 key2 value2 ...](#13. msetnx key1 value1 key2 value2 ...)

[14. getset key value](#14. getset key value)


接下来的所有类型的操作中,-1都代表最后。

String类型适合存储字符串,用作计数器

1. set key value

创建键值对,当再次set已经存在的key时会覆盖掉之前的value;并且set可以将任意类型的数据转换成一个string类型的数据,比如对一个list类型的list1使用set list1 abc可以将list替换为string类型的abc。

2. get key

获取key对应的内容,仅对string类型的value使用。

3. append key string

对指定key的value后添加其他信息,即对value的内容进行字符拼接;添加后会返回value的长度;如果不存在指定的key,那么就会创建一个并将string赋给value,相当于set。

4. strlen key

查看指定key对应的value的长度。

5. incr key 和 decr key

让指定键值对的value自增1;相反,decr key则是让指定键值对的value自减1。

6. incrby key num 和 decrby key num

让指定键值对的value自增指定步长;相反,decrby key num则是让指定键值对的value自减指定步长。

以上两类操作value的值必须是数字。

7. getrange key start end

获取指定键值对的指定部分的信息,该范围是闭区间,start和end设置为0和-1代表获取整个value。要注意的是,在截取时由于要构成一个区间,区间要求前面的数不能大于后面的数,所以start不能大于end;还有就是如果出现负数,那么会将这个负数处理成"字符串长度+负数",所以-1代表末尾是因为字符串长度-1=最后一个字符的下标。

如果 start和end都大于最后一个字符的下标,那么就会截取到空串,因为只是end大于末尾下标时才会处理成末尾,start大于末尾下标时还是会按照真实位置计算。

8. setrange key start string

替换指定键值对的部分区间的信息,从指定位置start开始替换(start是下标,字符串是从0开始的),替换的长度和string的长度相同;当不存在该键值对时,它会创建一个键值对,并从start的位置开始将string赋值给value,然后前面的位置补上\x00。\x00中\是转义字符,也就是十六进制的0x00。返回的结果是执行完setrange操作后value的长度。

9. setex key time value

setex为set+expire,当不存在指定key时会创建并赋值,当存在指定键值对时则会覆盖原来的value,set操作结束后设置过期时间;当对同一键值对执行多次setex操作时,后面的setex操作不仅会覆盖该键值对的value值,而且会重新设定过期时间。

10. setnx key value

setnx为set+notexists,仅当不存在key时才创建键值对,避免覆盖原有的键值对,在分布式锁中会经常用到。

11. mset key1 value1 key2 value2 ...

同时执行多个set操作。

12. mget key1 key2 ...

同时执行多个get操作。

13. msetnx key1 value1 key2 value2 ...

同时执行多个setnx操作,但msetnx是一个原子性操作,要么一起成功,要么一起失败,所以如果有一个key已经存在,那么这个key对应的setnx操作不会执行,就会导致所有setnx操作不会执行,即如果有一个key已经存在那么msetnx操作无效;区别于mget,当key不存在时get会返回nil而不是不执行,所以是成功执行get操作。

14. getset key value

先get后set,当key不存在时返回nil,并创建键值对;当key存在时则先返回原来的值,再用新值覆盖掉旧值。

相关推荐
TDengine (老段)9 分钟前
TDengine 物理计划生成 — 算子下沉、Exchange 与 Subplan 切分
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
swordbob14 分钟前
MYSQL RR 解决“脏读+不可重复读“和“幻读“的本质区别
数据库·mysql
IvorySQL21 分钟前
PostgreSQL 全球对话:开源链接世界,共建共治共享
数据库·postgresql·开源
Nontee32 分钟前
新手数据库进阶:大白话图解四大隔离级别与底层机制
数据库·oracle
dishugj37 分钟前
【YashanDB 认证】我的崖山数据库初体验:从陌生到上手的成长之路
数据库
前端 贾公子41 分钟前
Claude Code 的 skills 源码解析 (上)
数据库·人工智能
吠品43 分钟前
.NET 8 单文件发布:把 exe 和一堆 dll 打进一个文件里
服务器·数据库·windows
cmes_love1 小时前
期货五档tick数据下载教程期权五档高频历史数据以及分钟量化回测下载
数据库
蚂蚁数据AntData1 小时前
从ChatBI到业务记忆:重新定义数据智能的生产力边界
大数据·网络·数据库·人工智能·算法
Quincy_Freak1 小时前
技术随笔|银河麒麟aarch64内网轻量数据分析工具 SQLiteGo 使用体验
大数据·数据库·数据挖掘·数据分析·sqlite·银河麒麟·aarch64