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
​
​

应用场景

  1. 计数器
    1. 阅读数,点赞数,点击数,访问量等
  2. 单值缓存
    1. 商品库存,key=商品id,value=库存数量
  3. 统计多单位的数量
  4. 对象缓存存储
    1. set 存储用户信息,key=user:{id}{:filed} value=json格式数据
    2. mset 批量存储用户信息,适用于数据不断变化的应用场景,如用户余额,存取方便,效率高。
  5. 分布式锁:SETNX命令
    1. 适用场景:在一个集群环境下,多个web应用时对同一个商品进行抢购和减库存操作时,可能出现超卖时会用到分布式锁,功能:当且仅当 key 不存在,将 key 的值设为 value ,并返回1;若给定的 key 已经存在,则 SETNX 不做任何动作,并返回0。
  6. 验证码、token:
    1. 通过设置key的过期时间来销毁过期的验证码,和业务系统解耦。
  7. 自增ID
    1. 当 redis 的 string 类型的值为整数形式时,redis 可以把它当做是整数一样进行自增(incr)自减(decr)操作。
  8. 共享Session
    1. 用户登陆信息,Redis将用户的Session进行集中管理,每次用户更新或查询登陆信息都直接从Redis中集中获取。