Redis--数据结构--String

1. 介绍

字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M

2. 命令

2.1 赋值

命令SET key value

命令说明:如果不存在指定Keyd的映射,那么增加这个映射,否则更新映射的值。

返回值:OK

Redis--数据结构--String_Redis的字符串操作

2.2 取值

命令GET key

命令说明:获取指定Key的值,如果值不是String类型,那么返回错误

返回值:如果key存在,返回key的值,否则返回null

Redis--数据结构--String_Redis的字符串的批量操作_02

2.3 获取并更新

命令GETSET key value

命令说明:首先获取key的值,然后用value覆盖原值。这是一个原子操作。

返回值:如果原来不存在key的映射的值,那么返回null,否则返回key原来的值。

Redis--数据结构--String_Redis的字符串操作_03

2.4 递增

命令INCR key

命令说明:将指定key的值递增1后返回。key对应的值必须是数字,或者可以转为数字,否则执行失败。该操作具有原子性。

返回值:key对应的值递增后的值,如果key不存在,那么原值为0.

Redis--数据结构--String_Redis的字符串的批量操作_04

2.5 递减

命令DECR key

命令说明:将指定key的值递减1后返回。key对应的值必须是数字,或者可以转为数字,否则执行失败。该操作具有原子性。

返回值:key对应的值递减后的值,如果key不存在,那么原值为0.

Redis--数据结构--String_Redis的字符串操作_05

2.6 增加

命令INCRBY key value

命令说明:将指定key的值增加指定的值value后返回。key对应的值必须是数字,或者可以转为数字,否则执行失败。该操作具有原子性。

返回值:key对应的值增加后的值,如果key不存在,那么原值为0.

Redis--数据结构--String_Redis的String_06

2.7 减少

命令DECRBY key value

命令说明:将指定key的值减少指定的值value后返回。key对应的值必须是数字,或者可以转为数字,否则执行失败。该操作具有原子性。

返回值:key对应的值减少后的值,如果key不存在,那么原值为0.

Redis--数据结构--String_Redis的字符串的批量操作_07

2.8 超时赋值

命令SETEX key seconds value

命令说明:设置key的值为value,同时设置该key存活时间为seconds.该操作具有原子性。

返回值:OK(如果key有原值,将会被覆盖)

Redis--数据结构--String_Redis的常用用法_08

2.9 存在赋值

命令SETNX key value

命令说明:如果key不存在,那么增加key的映射,以及key的值为value;如果key存在,那么什么都不做。

返回值:1:设置成功;0:设置失败。

Redis--数据结构--String_Redis的字符串的批量操作_09

2.10 追加

命令APPEND key value

命令说明:将value追加到key的值的后面,如果key不存在,那么初始值为空。

返回值:追加后value的长度。

Redis--数据结构--String_Redis的字符串的批量操作_10

2.11 获取长度

命令STRLEN key value

命令说明:返回指定key的值的字符串的长度。如果key不存在,长度为0.

返回值:长度。

Redis--数据结构--String_Redis的字符串常用操作_11

2.12 批量赋值

命令MSET key0 value0[key1 value1…]

命令说明:批量赋值key指定的value。该操作具有原子性。

返回值:OK

Redis--数据结构--String_Redis的字符串操作_12

2.13 批量取值

命令MGET key0 [key1 …]

命令说明:批量取值key。如果key不存在,或者不是字符串,返回空(Nil)

返回值:values 列表

Redis--数据结构--String_Redis的字符串的批量操作_13

2.14 批量存在赋值

命令MSETNX key1 value1 [key2 value2 …]

命令说明:批量设置值,不存在设置,如果任意一个key已经存在,那么该次操作失败,该次全部操作回滚。

返回值:1:成功;0:失败。

Redis--数据结构--String_Redis的String_14

3. 示例

3.1 秒杀

背景:618活动,在线1W人,秒杀10件商品。

  1. 商品初始化
  2. 秒杀
  3. 结束

设置商品数量:

Redis--数据结构--String_Redis的String_15

然后每个线程都使用递减操作:

Redis--数据结构--String_Redis的字符串常用操作_16

因为递减是原子操作,所以只要最后线程得到的结果大于0,那么就是秒杀成功的线程

3.2 缓存

背景:将Redis作为数据库的缓存,将经常使用的数据放到redis中。

修改的时候使用获取并更新操作。

Redis--数据结构--String_Redis的字符串操作_17

当然可以设置缓存过期时间:

Redis--数据结构--String_Redis的字符串常用操作_18