Redis 数据类型及其使用场景 String 篇

String 类型的基本操作#

  • 添加 / 修改数据
    set key value
127.0.0.1:6379> set name zhangsan
OK
  • 获取数据
    get key
127.0.0.1:6379> get name
"zhangsan"
  • 删除数据
  127.0.0.1:6379> del name
  (integer) 1
  • 添加修改多个数据
mset name zhangsan age 20
  • 获取多个数据
127.0.0.1:6379> mget name age
1) "zhangsan"
2) "20"
  • 获取数据字符个数
127.0.0.1:6379> strlen name
(integer) 8
  • 在数据后面追加信息 (存在就追加,不存在就创建)
127.0.0.1:6379> append name hehe
(integer) 12
127.0.0.1:6379> get name
"zhangsanhehe"
127.0.0.1:6379> 

String 类型的扩展操作#

随着应用运行中,我们的数据量会越来越大,我们不能让数据都在一张表里面,这样会影响数据库的查询效率,这个时候我们就需要把一张大表切割成多张小表,这就是在大中型应用中使用的基本操作,分表。但是将一张表分成多个表之后让它们自己控制自己的主键 id 自增肯定是不行的,比如会出现多个重复 id 的数据,这个时候可以使用 redis 来解决 id 重复的问题。

解决方案#

  • 设置数据增加指定的值

      127.0.0.1:6379> set number 1
     OK
     127.0.0.1:6379> incr number
     (integer) 2
     127.0.0.1:6379> 
    

    string 在 redis 内部存储默认是一个字符串,当遇到增 / 减,如 incr/decr 等操作时会转换成数值进行运算,redis 的所有操作都是原子性的,采用单线程执行所有任务,命令都是一个个执行的,无需考虑并发带来的影响

应用场景: 1. 微信投票限制每个号码在 10 小时内只能投一次票。2. 热门商品维持三天热门自动取消热门。

解决方案#

  • 设置数据的生命周期

    Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。

SETEX KEY_NAME TIMEOUT VALUE

    127.0.0.1:6379> setex tel 60 13888888888
    OK
    127.0.0.1:6379> get tel
    "13888888888"
    127.0.0.1:6379> get tel  //等待60s
    (nil)
    127.0.0.1:6379> 
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。