redis的数据存储格式
redis 自身是一个 Map,其中所有的数据都是采用 key : value 的形式存储 。
数据类型指的是存储的数据的类型,也就是 value 部分的类型,key 部分永远都是字符串。
string类型
存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型。
存储数据的格式:一个存储空间保存一个数据 。
存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用。
string数据类型的基本操作
添加/修改数据
set key value
获取数据
get key
删除数据
del key
添加/修改多个数据
mset key1 value1 key2 value2 ...
获取多个数据
mget key1 key2
获取数据字符个数
strlen key
追加信息到原始信息后部(如果原始信息存在就追加,否则新建)
append key value
单数据操作与多数据操作的选择
耗时分析:应用服务器和redis之间数据的发送传输耗时时间+redis执行数据操作耗时时间。
原则:数据量较小则可以批量操作,太大则需要拆分多次操作,根据测试redis的性能情况来做出平衡。
string类型数据的扩展操作
设置数值数据增加指定范围的值
incr keyincrby key incrementincrbyfloat key increment
设置数值数据减少指定范围的值
decr keydecrby key increment
string 作为数值操作
string在redis内部存储默认就是一个字符串,当遇到增减类操作incr,decr时会转成数值型进行计算。
redis所有的操作都是原子性的,采用单线程处理所有业务,命令是一个一个执行的,因此无需考虑并发 带来的数据影响。
注意:按数值进行操作的数据,如果原始数据不能转成数值,或超越了redis 数值上限范围,将报错。9223372036854775807(java中long型数据最大值,Long.MAX_VALUE)。
应用场景:redis用于控制数据库表主键id,为数据库表主键提供生成策略,保障数据库表的主键唯一性 ,此方案适用于所有数据库,且支持数据库集群。
设置数据具有指定的生命周期
setex key seconds valuepsetex key milliseconds value
应用场景:redis 控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作。
string 类型数据操作的注意事项
数据操作不成功的反馈与数据正常操作之间的差异
① 表示运行结果是否成功
(integer) 0 → false 失败
(integer) 1 → true 成功
② 表示运行结果值
(integer) 3 → 3 3个
(integer) 1 → 1 1个
数据未获取到
(nil)等同于null
数据最大存储量
512MB
数值计算最大范围(java中的long的最大值)
9223372036854775807
key 的设置约定
数据库中的热点数据key命名惯例
表名:主键名:主键值:字段名
例如:某个用户的粉丝数量key命名
table_user:id:123:fansCount




