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

相关推荐
vvvae12345 小时前
分布式数据库
数据库
雪域迷影5 小时前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
bug菌¹6 小时前
滚雪球学Oracle[4.2讲]:PL/SQL基础语法
数据库·oracle
逸巽散人6 小时前
SQL基础教程
数据库·sql·oracle
月空MoonSky6 小时前
Oracle中TRUNC()函数详解
数据库·sql·oracle
momo小菜pa6 小时前
【MySQL 06】表的增删查改
数据库·mysql
向上的车轮7 小时前
Django学习笔记二:数据库操作详解
数据库·django
编程老船长7 小时前
第26章 Java操作Mongodb实现数据持久化
数据库·后端·mongodb
全栈师8 小时前
SQL Server中关于个性化需求批量删除表的做法
数据库·oracle
Data 3178 小时前
Hive数仓操作(十七)
大数据·数据库·数据仓库·hive·hadoop