数据存储类型介绍
业务数据的特殊性
一、作为缓存使用
1、原始业务功能设计
秒杀、618活动、双11活动、排队购票
2、运营平台监控到的突发高频访问数据
突发时政要闻,被强势关注围观
3、高频、复杂的统计数据
在线人数、投票排行榜
二、附加功能
系统功能优化或升级
但服务器升级集群
Session管理
Token管理
三、Redis数据类型(5种常用)
String String
hash HashMap
list LinkedList链表
set HahSet
sorted_set TreeSet
Redis数据存储格式
Redis自身是一个Map,其中所有的数据都是采用key:value的形式存储
数据类型指的是存储的数据的类型,也就是value部分的类型,key部分永远都是字符串
五种数据类型
一、string
string类型数据的扩展操作
业务场景1
解决方案
设置数值数据增加指定范围的值
incr key//key自增1
incrby key increment //自定义自增的大小,increment的大小可以为负数
increbyfloat key increment//自定义数值增加的值(小数)
设置数值数据减少指定范围的值
decr key//key值自减1
decrby key increment//自定义自减的大小,increment的大小可以为负数
string作为数值操作
1、string再redis内部存储默认就是一个字符串,当遇到增减类操作incr、decr时会转成数值型进行计算
2、redis所有的操作都是原子性的,采用单线程处理所有业务,命令是一个一个执行的,因此无需考虑并发带来的数据影响
3、注意:按数值进行操作的数据,如果原始数据不能转成数据,或超越了redis数值上限范围,将报错(java中long型数据最大值:9223372036854775807)
Tips1:
redis用于控制数据库表主键id,为数据库表主键提供生成策略,保障数据库表的主键唯一性
此方案使用于所有数据库,且支持数据库集群
业务场景2
解决方案
设置数据具有指定的生命周期
setex key seconds value 设置数据的有效时间(秒)
psetex key milliseconds value 毫秒
Tips2:
redis控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性控制的操作
string类型数据操作的注意事项:
数据操作不成功的反馈与数据正常操作之间的差异
①表示运行结果是否成功
(integer)0-->false 失败
(integer)1-->true 成功
②表示运行结果值
(integer)3-->3 3个
(integer)1-->1 1个
数据未获取到
nil 相当于 null
数据最大存储量
512MB
数据计算最大范围(java中long的最大值)
±9223372036854775807
业务场景3
解决方案:
1、在redis中为大V用户设定用户信息,以用户主键和属性值作为key,后台设定定时刷新策略即可
eg: user:id:00078:fans 123456789(粉丝数)
eg: user:id:00078:blogs 12345(博客篇数)
eg: user:id:00078:focus 23
2、在redis中以json格式存储大V用户信息,定数刷新(也可以使用hash类型)
eg: user:id:0078 {id:0078,name:春晚,fans:12345,blogs:123456789,focus:23}
Tips3:
redis应用于各种结构性和非结构性高热读数据访问加速
key的设置约定
数据库中的热点数据key命名管理