前言
本来想着这篇和上篇Reids 的数据结构、线程模型与全局命令合成一篇的,但是不知不觉上一篇的篇幅已经很长了,像我一样。就拆分成了两篇。可是一点都不带水的,主要是怕各位好哥哥看的累。都这样说了还不点赞加关注吗。
这一篇呢主要是讲字符串对应的 API,还是那句话,好哥哥,别偷懒,敲了才不容易忘啊。
概述
字符串类型是 Redis 最基础的数据结构。首先键都是字符串类型,而且其他几种数据结构都是在字符串类型基础上构建的,所以字符串类型能为其 他四种数据结构的学习奠定基础。字符串类型的值实际可以是字符串(简单的字符串、复杂的字符串(例如 JSON、XML))、数字 (整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能 超过 512MB。
1 常用命令
1.1 设置值-set
## 参数解析
## ex seconds:为键设置秒级过期时间。px milliseconds:为键设置毫秒级过期时间。
## nx:键必须不存在,才可以设置成功,用于添加。xx:与nx相反,键必须存在,才可以设置成功,用于更新。
set key value [ex seconds] [px milliseconds] [nx|xx]
## 例子
set test hello
1.2 设置值-setex/setnx
setnx 这个命令可是很有用的,如果 key 存在则失败,好哥哥想想这个可以干嘛。答案是肯定的,分布式锁。这个后续会在说的,先把命令熟悉了。
## 格式
setex key seconds value
setnx key value
## 因为键test已存在,所以setnx会失败,返回结果为0
setnx test redis
## 因为键test已存在,所以setex会成功,并修改对应的值
setex test 60 redis
1.3 获取值
## 格式
get key
## 获取testkey,返回的就是你设置的那个值了,如果key不存在则返回(nil)
get test
1.4 批量设置值
## 格式
mset key value [key value ...]
## 例子
mset a 1 b 2 c 3 d 4
1.5 批量获取值
## 格式
mget key [key ...]
## 例子,返回的结果就是按顺序对应key的值了,如果不存在这是(nil)
mget a b c
1.6 计数-incr
## incr 的值是一个自增操作,如果值不是整数是会报错的,如果key不存在,执行命令返回的就是1,否则则是自增加一。
incr key
## 第一次计数,返回1
incr auto
## 第二次计数,返回2
incr auto
1.7 decr、incrby、decrby、incrbyfloat
## decr(自减)、incrby(自增指定数字)、 decrby(自减指定数字)、incrbyfloat(自增浮点数)
decr key
incrby key increment
decrby key decrement
incrbyfloat key increment
2 非常用命令
2.1 追加值
## 格式
append key value
## 给test追加,返回的是值的长度
append test yyds
2.2 返回值的长度
## 格式
strlen key
## 获取test值长度,需要注意的是一个中文占3个字节。
strlen test
2.3 设置并返回原来值
## 格式
getset key value
## 如果key不存在则返回(nil),否则就返回设值前的值
getset test hello1
2.4 设置指定位置的字符
## 格式,没想到吧,这命令都有。
setrange key offeset value
## 将test第五个位置改成 world(从0开始算)
setrange test 5 world
2.5 获取部分值
## 格式,从哪个位置到哪个位置,从0开始算
getrange key start end
## 获取0-1的字符,返回he
getrange test 0 1
3 时间复杂度
4 使用场景
本期就到这啦,有不对的地方欢迎好哥哥们评论区留言,另外 求 关 注 、 求 点 赞 \color{#FF0000}{求关注、求点赞} 求关注、求点赞