Redis--数据结构--String
- 2.1 赋值
- 2.2 取值
- 2.3 获取并更新
- 2.4 递增
- 2.5 递减
- 2.6 增加
- 2.7 减少
- 2.8 超时赋值
- 2.9 存在赋值
- 2.10 追加
- 2.11 获取长度
- 2.12 批量赋值
- 2.13 批量取值
- 2.14 批量存在赋值
- 3. 示例
1. 介绍
字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。
2. 命令
2.1 赋值
命令:SET key value
命令说明:如果不存在指定Keyd的映射,那么增加这个映射,否则更新映射的值。
返回值:OK
2.2 取值
命令:GET key
命令说明:获取指定Key的值,如果值不是String类型,那么返回错误
返回值:如果key存在,返回key的值,否则返回null
2.3 获取并更新
命令:GETSET key value
命令说明:首先获取key的值,然后用value覆盖原值。这是一个原子操作。
返回值:如果原来不存在key的映射的值,那么返回null,否则返回key原来的值。
2.4 递增
命令:INCR key
命令说明:将指定key的值递增1后返回。key对应的值必须是数字,或者可以转为数字,否则执行失败。该操作具有原子性。
返回值:key对应的值递增后的值,如果key不存在,那么原值为0.
2.5 递减
命令:DECR key
命令说明:将指定key的值递减1后返回。key对应的值必须是数字,或者可以转为数字,否则执行失败。该操作具有原子性。
返回值:key对应的值递减后的值,如果key不存在,那么原值为0.
2.6 增加
命令:INCRBY key value
命令说明:将指定key的值增加指定的值value后返回。key对应的值必须是数字,或者可以转为数字,否则执行失败。该操作具有原子性。
返回值:key对应的值增加后的值,如果key不存在,那么原值为0.
2.7 减少
命令:DECRBY key value
命令说明:将指定key的值减少指定的值value后返回。key对应的值必须是数字,或者可以转为数字,否则执行失败。该操作具有原子性。
返回值:key对应的值减少后的值,如果key不存在,那么原值为0.
2.8 超时赋值
命令:SETEX key seconds value
命令说明:设置key的值为value,同时设置该key存活时间为seconds.该操作具有原子性。
返回值:OK(如果key有原值,将会被覆盖)
2.9 存在赋值
命令:SETNX key value
命令说明:如果key不存在,那么增加key的映射,以及key的值为value;如果key存在,那么什么都不做。
返回值:1:设置成功;0:设置失败。
2.10 追加
命令:APPEND key value
命令说明:将value追加到key的值的后面,如果key不存在,那么初始值为空。
返回值:追加后value的长度。
2.11 获取长度
命令:STRLEN key value
命令说明:返回指定key的值的字符串的长度。如果key不存在,长度为0.
返回值:长度。
2.12 批量赋值
命令:MSET key0 value0[key1 value1…]
命令说明:批量赋值key指定的value。该操作具有原子性。
返回值:OK
2.13 批量取值
命令:MGET key0 [key1 …]
命令说明:批量取值key。如果key不存在,或者不是字符串,返回空(Nil)
返回值:values 列表
2.14 批量存在赋值
命令:MSETNX key1 value1 [key2 value2 …]
命令说明:批量设置值,不存在设置,如果任意一个key已经存在,那么该次操作失败,该次全部操作回滚。
返回值:1:成功;0:失败。
3. 示例
3.1 秒杀
背景:618活动,在线1W人,秒杀10件商品。
- 商品初始化
- 秒杀
- 结束
设置商品数量:
然后每个线程都使用递减操作:
因为递减是原子操作,所以只要最后线程得到的结果大于0,那么就是秒杀成功的线程
3.2 缓存
背景:将Redis作为数据库的缓存,将经常使用的数据放到redis中。
修改的时候使用获取并更新操作。
当然可以设置缓存过期时间: