本文章基于黑马程序员Redis教学视频进行总结,仅作为学习所用,欢迎大家在评论区多多讨论
视频连接:B站黑马程序员Redis视频(点击跳转)
在Redis基础学习·第四期(点击跳转)中谈到Redis的五种基本数据类型,这期就来聊聊Redis中的String类型
set key value
get key
del key
mset key1 value1 key2 value2 …
mget key1 key2 …
m:multiple [n].倍数 [adj].数量多的;多种多样的
strlen key
append key value
append指令:若该key存在就追加,若不存在就相当于新建
解释说明一下:
①发送指令、接收数据:所消耗"小时钟"时间
②Redis执行指令:所消耗"大时钟"时间
③红色的小加号:一般情况下,一次性发送多个指令和接收多个数据会比单个指令和数据所用时间多一点,毕竟数据量大
对于单线程Redis,尽量不要一次性发送或接收巨大的数据量,容易造成阻塞
一张表保存的数据量不能太大,数据量太大会影响查询效率。在这种情况下,会把一张大表细分成若干张小表,甚至还要把一个库里的表分散到若干个库里(Curry) —— 简称:分库分表
数据分表会产生的问题:由于数据库表里的id一般情况下是连续自增的,每一个表都会独自控制主键id的自增,这样会出现主键id重复的问题
用Redis来解决!
解决方案
incr key incrby key increment incrbyfloat key increment
decr key decrby key increment
说明:使用incrby和decrby指令时可以带负数
string 作为数值操作
string在redis内部存储默认就是一个字符串,当遇到增减类操作incr,decr时会转成数值型进行计算。
redis所有的操作都是原子性的,采用单线程处理所有业务,命令是一个一个执行的,因此无需考虑并发带来的数据影响。
注意:按数值进行操作的数据,如果原始数据不能转成数值,或超越了redis 数值上限范围,将报错。(9223372036854775807为java中long型数据最大值:Long.MAX_VALUE)
Tips 1:
redis用于控制数据库表主键id的生成,为数据库表主键提供生成策略,为此控制主键id不会重复,保障数据库表的主键唯一性
此方案适用于所有数据库,且支持数据库集群
解决方案
setex key seconds value psetex key milliseconds value
Tips 2:
解决方案
key value user:id:3506728370:fans → 12210947 user:id:3506728370:blogs → 6164 user:id:3506728370:focuss → 83
user:id:3506728370 → {"id":3506728370,"name":"春晚","fans":12210862,"blogs":6164, "focus":83}
第一种格式操作数据比较方便,第二种则需要将数据取出来再操作。二者没有孰好孰坏之分,还是得根据使用场景来进行选择。
Tips 3:
数据操作不成功的反馈与数据正常操作之间的差异
① 表示运行结果是否成功
(integer) 0 → false 失败
(integer) 1 → true 成功
② 表示运行结果值
(integer) 3 → 3个
(integer) 1 → 1个
根据具体的指令进行区分(听君一席话,如听一席话)
③数据未获取到
(nil)等同于null
④数据最大存储量:512MB
⑤数值计算最大范围(java中的long的最大值:9223372036854775807)