string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
127.0.0.1:6379> set name chris //设置指定 key 的值
OK
127.0.0.1:6379> get name //获取指定 key 的值
"chris"
127.0.0.1:6379> mset m1 k1 m2 k2 //多个key-value 设置
OK
127.0.0.1:6379> keys * //获取所有key
1) "m1"
2) "m2"
3) "name"
127.0.0.1:6379> GETRANGE name 0 2 //返回 key 中字符串值的子字符,从0开始
"chr"
127.0.0.1:6379> get name
"chris"
127.0.0.1:6379> getset name tony //将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
"chris"
127.0.0.1:6379> get name
"tony"
127.0.0.1:6379> keys *
1) "m1"
2) "m2"
3) "name"
127.0.0.1:6379> mget m1 m2 name //获取所有(一个或多个)给定 key 的值。
1) "k1"
2) "k2"
3) "tony"
127.0.0.1:6379> APPEND name -qx //如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾,如果不存在,就相当于set
(integer) 7
127.0.0.1:6379> get name
"tony-qx"
127.0.0.1:6379> set num 0
OK
127.0.0.1:6379> INCR num //将 key 中储存的数字值+1。
(integer) 1
127.0.0.1:6379> get num
"1"
127.0.0.1:6379> DECR num //将 key 中储存的数字值-1。
(integer) 0
127.0.0.1:6379> INCRBY num 2 //key 所储存的值加上给定的减量值(decrement) 。
(integer) 2
127.0.0.1:6379> INCRBY num 2
(integer) 4
127.0.0.1:6379> get num
"4"
127.0.0.1:6379> DECRBY num 2 //key 所储存的值减去给定的减量值(decrement) 。
(integer) 2
127.0.0.1:6379> DECRBY num 2
(integer) 0
127.0.0.1:6379> get num
"0"
127.0.0.1:6379> setex name 10 peter //将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
OK
127.0.0.1:6379> get name
"peter"
127.0.0.1:6379> ttl name //查看过期时间
(integer) 5
127.0.0.1:6379> ttl name
(integer) 0
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> setnx name chris //只有在 key 不存在时设置 key 的值。
(integer) 1
127.0.0.1:6379> setnx name chris2
(integer) 0
127.0.0.1:6379> STRLEN name //返回 key 所储存的字符串值的长度。
(integer) 5
应用场景
- 计数器
- 阅读数,点赞数,点击数,访问量等
- 单值缓存
- 商品库存,key=商品id,value=库存数量
- 统计多单位的数量
- 对象缓存存储
- set 存储用户信息,key=user:{id}{:filed} value=json格式数据
- mset 批量存储用户信息,适用于数据不断变化的应用场景,如用户余额,存取方便,效率高。
- 分布式锁:SETNX命令
- 适用场景:在一个集群环境下,多个web应用时对同一个商品进行抢购和减库存操作时,可能出现超卖时会用到分布式锁,功能:当且仅当 key 不存在,将 key 的值设为 value ,并返回1;若给定的 key 已经存在,则 SETNX 不做任何动作,并返回0。
- 验证码、token:
- 通过设置key的过期时间来销毁过期的验证码,和业务系统解耦。
- 自增ID
- 当 redis 的 string 类型的值为整数形式时,redis 可以把它当做是整数一样进行自增(incr)自减(decr)操作。
- 共享Session
- 用户登陆信息,Redis将用户的Session进行集中管理,每次用户更新或查询登陆信息都直接从Redis中集中获取。
,