Redis教程

Redis基础学习·第五期

本文主要是介绍Redis基础学习·第五期,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

  • 前言
  • 一、redis 数据存储格式
  • 二、string 类型
  • 三、string 类型数据的基本操作
  • 四、单数据操作与多数据操作的选择之惑
  • 五、string 类型数据的扩展操作
    • 业务场景一
    • 业务场景二
    • 业务场景三
  • 六、key的规范
  • 七、string 类型数据操作的注意事项

前言

本文章基于黑马程序员Redis教学视频进行总结,仅作为学习所用,欢迎大家在评论区多多讨论
视频连接:B站黑马程序员Redis视频(点击跳转)
在Redis基础学习·第四期(点击跳转)中谈到Redis的五种基本数据类型,这期就来聊聊Redis中的String类型


一、redis 数据存储格式

  • redis 自身是一个 Map 映射结构,其中所有的数据都是采用 key : value (键值对) 的形式存储
  • Redis的数据类型指的是存储的数据的类型,也就是 value 部分的类型,key 部分永远都是字符串
    在这里插入图片描述

二、string 类型

  • 存储的数据:存储单个数据,最简单的数据存储类型,也是最常用的数据存储类型
  • 存储数据的格式:一个存储空间保存一个数据
  • 存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用
    在这里插入图片描述

三、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,尽量不要一次性发送或接收巨大的数据量,容易造成阻塞

五、string 类型数据的扩展操作

业务场景一

一张表保存的数据量不能太大,数据量太大会影响查询效率。在这种情况下,会把一张大表细分成若干张小表,甚至还要把一个库里的表分散到若干个库里(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:

  • Redis 可以控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作

业务场景三

在这里插入图片描述
解决方案

  • 在redis中为大V用户设定用户信息,以用户主键和属性值作为key,后台设定定时刷新策略即可,比如:
		 key               value
user:id:3506728370:fans → 12210947
user:id:3506728370:blogs → 6164
user:id:3506728370:focuss → 83

在这里插入图片描述

  • 在redis中以json格式存储大V用户信息,定时刷新(也可以使用hash类型)
user:id:3506728370 →
{"id":3506728370,"name":"春晚","fans":12210862,"blogs":6164, "focus":83}

在这里插入图片描述
第一种格式操作数据比较方便,第二种则需要将数据取出来再操作。二者没有孰好孰坏之分,还是得根据使用场景来进行选择。

Tips 3:

  • Redis应用于各种结构型和非结构型高热度数据的访问加速

六、key的规范

在这里插入图片描述

七、string 类型数据操作的注意事项

数据操作不成功的反馈与数据正常操作之间的差异
① 表示运行结果是否成功
(integer) 0 → false 失败
(integer) 1 → true 成功
② 表示运行结果值
(integer) 3 → 3个
(integer) 1 → 1个
根据具体的指令进行区分(听君一席话,如听一席话)
③数据未获取到
(nil)等同于null
④数据最大存储量:512MB
⑤数值计算最大范围(java中的long的最大值:9223372036854775807)

这篇关于Redis基础学习·第五期的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!