「进击Redis」四、Redis 字符串API、运用场景解析

1,567 阅读3分钟

前言

本来想着这篇和上篇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 时间复杂度

String命令时间复杂度

4 使用场景

本期就到这啦,有不对的地方欢迎好哥哥们评论区留言,另外求关注、求点赞\color{#FF0000}{求关注、求点赞}

下一篇:Redis Hash运用场景、API解析
上一篇:Reids 的数据结构、线程模型与全局命令