Redis学习

Redis

一、Redis简介

1.基本介绍

  1. 一种NoSQL(Not-OnlySQL泛指非关系型数据库):作为关系型数据库的补充。是用C语言开发的一个开源的高性能键值对(key-value)数据库。
  2. 作用:应对基于海量用户和海量数据前提下的数据处理问题
  3. 特征:
    ①可扩容,可伸缩
    ②大数据下高性能
    ③灵活的数据模型
    ④高可用
  4. 常见的Nosql数据库:Redis,memcache,HBase,MongoDB
  5. 使用场景:在这里插入图片描述
    MySQL的数据先进行分类,交给不同的非关系型数据库集群,再对外提供数据服务:
    在这里插入图片描述
  6. 特征:
    在这里插入图片描述
  7. Redis的应用:在这里插入图片描述

2.基本操作

应用命令行:

  • 功能性指令
  • 清除屏幕信息
  • 帮助信息查阅
  • 退出指令
2.1具体指令

①信息添加(设置key,value数据):set key value
②信息查询(查询key的值,没有返回null):get key
③清除屏幕信息:clear
④帮助(获取命令帮助文档,获取组中所有命令信息名称):help 命令名称/@组名(string)
其信息表示为:
在这里插入图片描述
⑤退出客户端:quit exit <ESC>

二、数据存储类型介绍

1.业务数据的特殊性

作为缓存使用:

  1. 原始业务功能设计:秒杀、京东618、天猫双11、12306
  2. 运营平台监控到的突发高频访问数据:突发要闻强势关注
  3. 高频复杂的统计数据:直播在线人数、投票排行榜
  4. 系统功能优化或升级:单服务器升级集群、Session管理、Token管理

2.Redis数据类型

可类比java中的结构思想:
在这里插入图片描述

3.redis数据存储格式

3.1string类型
3.1.1string介绍

key永远都是一个String,而所说的数据类型指的是value
在这里插入图片描述

3.1.2string类型常用方法和注意事项

在这里插入图片描述
注:(integer 1代表操作成功integer 0代表操作失败 nil代表不存在),根据代码有时也表示执行后的结果值

  • 其常见基本操作:
    在这里插入图片描述
    注:在同等数据量的发送下,数据发送可选择单行数据和多行数据发送,单数据发送需要两次发送数据的时间和一个执行时间,而多数据发送只需要两次发送数据的时间和n(条数据)个执行时间,所以同等数据的条件下,单发送数据的效率不如多发送数据
  • 扩展操作:解决MySQL中分表使其主键不重复的问题
    在这里插入图片描述
    注:这两种方法后都可跟负数
    在这里插入图片描述
    在这里插入图片描述
  • 数据时效性设置:为数据设置指定的生命周期(即确定一个数据能活多久)通过数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作
    在这里插入图片描述
    注:数据最大存储量:512MB,数据计算最大范围(java中的long的最大值)
3.1.3string应用场景

在redis中为大V用户设定用户信息,以用户主键和属性值作为key,后台设定定时刷新策略即可。redis应用于各种结构型和非结构型高热度数据访问加速
使用以用户主键和属性值作为key,后台设定定时刷新策略即可
在这里插入图片描述
使用以json格式存储大V用户信息,定时刷新(也可以使用hash类型)
在这里插入图片描述
两种方法都可以,第一种可以直接根据命令行的代码改变数据,第二种改需要全改数据

3.1.4key的设置约定

在这里插入图片描述

3.2hash类型
3.2.1hash概述

在这里插入图片描述
左边是key,右边就对应的是数据类型hash

3.2.2hash特点

在这里插入图片描述
如果field数量较少,存储结构优化为类数组结构
如果field数量较多,存储结构使用HashMap结构

3.2.3hash类型数据的基本操作

在这里插入图片描述
在这里插入图片描述
扩展操作:
在这里插入图片描述

3.2.4hash类型数据操作的注意事项

在这里插入图片描述

3.2.5hash类型应用场景 :电商网站购物车设计与实现

在这里插入图片描述
在这里插入图片描述
应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储设计
string数据存储讲究整体性,一次性更新或获取,将就读为主
hash数据存储可以根据field把属性分开,所以讲究灵活性,已更新为主

3.3list类型
3.3.1list数据类型概述

在这里插入图片描述

3.3.2list数据类型的基本操作

在这里插入图片描述
扩展操作(list阻塞数据获取):
在这里插入图片描述
类似任务队列实现的基础操作:当某个list(或多个list)中在限定时间timeout内一有值则立马取出来,超过时间限制没有值的话返回nil

3.3.3list扩展操作的业务场景

微信朋友圈点赞,要求按照点赞顺序显示点赞好友信息
如果取消点赞,移除对应好友信息

在这里插入图片描述
比如一个双端队列十三个数,包含4个a,删除其中三个a,l指代的是左删
在这里插入图片描述

3.3.4list类型数据操作注意事项

在这里插入图片描述

3.3.5list类型应用场景:

①依赖list的数据具有顺序的特征对信息进行管理
②使用队列模型解决多路信息汇总合并的问题
③使用栈模型解决最新消息的问题

3.4set类型
3.4.1set数据类型的概述

在这里插入图片描述

3.4.2set数据类型的基本操作

在这里插入图片描述
在这里插入图片描述
扩展操作:
在这里插入图片描述
在这里插入图片描述

3.4.3set数据类型的注意事项

在这里插入图片描述

3.4.4set数据类型的应用场景

根据set数据类型的特点可以实现数据的去重
验证黑名单的用户

3.5 sorted_set数据类型
3.5.1sorted_set数据类型概述

在这里插入图片描述

3.5.2sorted_set数据的基本操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
扩展操作:
在这里插入图片描述
专门用来为所有参与排名的资源建立排序数据
在这里插入图片描述

3.5.3sorted_set数据的注意事项

在这里插入图片描述

3.5.4sorted_set数据的应用场景

在这里插入图片描述
对于带有权限的:
在这里插入图片描述
必须补齐数位才能比较

4.Redis实际应用总结

  • redis用于控制数据库表主键id,为数据库表逐渐提供生成策略,保障数据库表的主键唯一性
  • redis控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作
  • redis应用于各种结构性和非结构性高热度数据访问加速
  • redis应用于购物车数据存储设计
  • redis应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储设计
  • redis应用于具有操作先后顺序的数据控制
  • redis应用于最新消息的展示
  • redis应用于随即推荐类信息检索,例如热点歌单推荐,热点新闻推荐热卖旅游线路,应用APP推荐,大V推荐等
  • redis应用于同类信息的关联检索,二度关联检索,深度关联检索
  • redis应用于同类型数据的快速去重
  • redis应用于基于黑名单与白名单设定的服务控制
  • redis应用于计数器组合排序功能对应的排名
  • redis应用于定时任务执行顺序管理或任务过期管理
  • redis应用于即使任务、消息队列执行管理
  • redis应用于显示按次结算的服务控制
  • redis应用于基于时间顺序的数据操作,而不关注具体时间(微信接收消息)

二、通用命令

1.key通用指令

①key特征:key是一个字符串,通过key获取redis中保存的数据
在这里插入图片描述
②基本指令:
在这里插入图片描述
③扩展指令(时效性控制):分设置状态的、看状态的和改状态的
在这里插入图片描述
④扩展指令(查询模式):查询key
在这里插入图片描述
在这里插入图片描述
⑤其他操作:
在这里插入图片描述

2.数据库通用指令

①数据库中key的重复问题及解决:
问题:key是由程序员定义的,redis在使用过程中,伴随着操作数据量的增加,会出现大量的数据以及对应的key,数据不区分种类、类别混杂在一起,极易出现重复或冲突
解决:redis为每个服务提供有16个数据库,编号0到15,且每个数据库之间独立

②基本指令:
在这里插入图片描述
quit用来退出,ping用于检查是否与服务器连接,echo用于检查服务器的响应情况

③相关操作指令:
在这里插入图片描述
在这里插入图片描述
dbsize看看当前库里key的个数
flushdb刷掉你现在的数据,flushall刷掉所有的数据

三、Jedis

1.jedis简介

Java语言链接redis服务的方式:jedis、SpringData Redis、Lettuce

2.jedis的引入

在这里插入图片描述
jedis与redis的语法一模一样:
在这里插入图片描述

四、引入Reids依赖,用模板操作相关redis业务

1.引入依赖

		<!--Redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

2.注入RedisTemplate注解

根据RedisTemplate操作相关redis的数据类型操作

3.使用redis存储验证码

在这里插入图片描述
取消Session存储验证码的方式,先为客户端的用户设置一个临时的凭证,用cookie存储,设置很短的时效,再用redis存储验证码,效率较高

4.使用Redis缓存用户信息

处理每次请求时,都要根据凭证查询用户信息,访问的频率非常高,缓存按照三步进行:
在这里插入图片描述
注:数据更改后,要先清除缓存,再将新的数据存入缓存

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值