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存在时则先返回原来的值,再用新值覆盖掉旧值。

相关推荐
Runing_WoNiu21 分钟前
Redis主从架构、哨兵模式及集群比较
数据库·redis·架构
考虑考虑2 小时前
postgressql更新时间
数据库·后端·postgresql
甄超锋2 小时前
python sqlite3模块
jvm·数据库·python·测试工具·django·sqlite·flask
HMBBLOVEPDX3 小时前
MySQL的锁:
数据库·mysql
数据皮皮侠4 小时前
最新上市公司业绩说明会文本数据(2017.02-2025.08)
大数据·数据库·人工智能·笔记·物联网·小程序·区块链
小云数据库服务专线4 小时前
GaussDB数据库架构师修炼(十六) 如何选择磁盘
数据库·数据库架构·gaussdb
码出财富5 小时前
SQL语法大全指南
数据库·mysql·oracle
异世界贤狼转生码农7 小时前
MongoDB Windows 系统实战手册:从配置到数据处理入门
数据库·mongodb
QuZhengRong7 小时前
【数据库】Navicat 导入 Excel 数据乱码问题的解决方法
android·数据库·excel
码农阿豪7 小时前
Windows从零到一安装KingbaseES数据库及使用ksql工具连接全指南
数据库·windows