redis最初就是被定义为缓存使用的,缓存中放哪些业务数据呢?

1.原始业务功能设计
  • 秒杀
  • 618、双十1
  • 排队购票
2.运营平台监控到的热点数据
3.高频、复杂的统计数据
  • 在线人数
  • 投票排行榜
4.附加功能
  • session、token令牌
  • 单服务器升级集群
String类型的基本操作
  • 添加数据
set key value
  • 获取数据
get key #返回数据,或者(nil)没有数据
  • 删除数据
del key  #返回(integer)1--成功 (Integer)0--失败
  • 添加多个数据 multiple(多个) 批量比单个操作节省时间,但也要考虑数据规模以及网络堵塞
mset key1 value1 key2 value2 key3 value3...
  • 获取多个数据
mget key1 key2 ...
  • 获取字符串长度
strlen key
  • 追加信息到原始信息后面(如果原始信息存在就追加,否则新建)
append key value #返回追加后的字符串长度
String类型的扩展操作

场景:分表主表如何保证唯一,redis可以实现。

  • 设置数值数据增加指定的范围的值
incr key #自增+1
incrby key increment #增加increment整数,可以为负整数
incrbyfloat key increment #增加increment,可以为整数或小数
  • 设置数值数据减少指定的范围的值
decr key #自减+1
decrby key increment #自减increment整数,可以为负整数
decrbyfloat key increment #自减increment,可以为整数或小数

String作为数值操作注意事项:

  • string在redis内部存储默认就是一个字符串,当遇到增减操作incr,decr时会转成数值型进行计算
  • redis的所有操作都是原子性的,采用单线程处理所有的业务,命令是一个一个执行的,因此无需考虑并发带来的数据影响。
  • 注意:按数值进行操作的数据,如果原始数据不能转成数值,或超越了redis数值上线范围,将报错。(java中Long型数据最大值,Long.MAX_VALUE)

场景2:保存博客专家的用户信息。

  • 在redis中,以用户主键和属性名作为key,后台设定定时刷新策略即可。
eg:    user:id:1000001:fans →5200  #表示id为1000001的用户拥有粉丝数5200
  • 在redis中以json格式存储博客专家的用户信息,定时刷新(也可以使用hash类型)
eg:    user:id:1000001 →{id:1000001,fans:5200,name:***}

key的设置格式约定

表名:主键名:主键值:字段名