为什么选择Redis?解析核心使用场景与性能优化技巧

解析核心使用场景与性能优化技巧

redis只能能操作字符串,要把Java对象存入redis非关系型数据库,需要用序列化变成字符串,再反序列化成Java对象

not only sql

NoSQL非关系型数据库:缓存数据库,只能读取数据,用于高访问

redis和memecached是键值对的Nosql,主要用来做缓存的

(对比mysql,每次下载mysql都有一个空的data文件,把数据写入磁盘,读取磁盘的操作,传统的关系型数据库满足不了高访问:相当于现在的固态盘和以前的机械盘对比)

redis简介

1. 优点

  • 集群(主从同步,备份服务器,副班长代替职位)
  • 支持订阅、发布 群发MQ功能;高并发
  • 支持持久化(内存里面存redis键值断电会释放,需要备份),可以备份保存在磁盘里,不仅仅是内存保存
  • 数据存储类型 set,zset,string,hash,list列表

2. 配置与安装、启动

解压缩的redis文件夹打开cmd命令行窗口,启动后不关闭,否则redis数据库系统会关闭,等价于tomcat的一个服务器

步骤:

  1. redis-server.exe redis.windows.conf
  2. redis-cli.exe
  3. 进入127.0.0.0:6379
  4. 密码输入123456
  5. 默认redis有数据库12个

PS:常用操作会有默认补全命令:设置键值,设置多个,设置自增

启动成功 :

以上:redis的安装配置、启动信息。

3. 常用命令

  • 清空 flush
  • 切换库 select
  • 获取所有 keys *
  • expire 过期时间秒级别

需要注意的是:在springboot项目使用redis非关系型数据库需要加入data依赖

redis只能能操作字符串,要把Java对象存入redis非关系型数据库,需要用序列化变成字符串,再反序列化成Java对象。

Redis使用场景

1. 简单概述

一些比较流行的使用场景:

  • 中央缓存: 第一次拿到的资源显示在前端,顺便放入redis非关系型数据库,第二次需要查询第一次的数据就直接在中央缓存redis数据库先查询,如果拿不到就再在源头服务器查数据库,重复这个过程。
  • 计数器: 点赞,收藏,转发
  • 实时防攻击系统:锁定ip访问次数,获取当前登录请求IP地址,黑名单匹配,业务逻辑:每次请求发送过来,先从redis中查询黑名单,错误次数小于5正常访问,如果访问次数大于5,将ip加入黑名单
  • 设定有效期: vip和红包,转账时间
  • 自动去重
  • 队列: 秒杀
  • 消息订阅
  • 验证码存值和设置失效时间:以若依开源框架为例
  • 限制用户下载系统文档数量

这是数据存储和处理的利器!

redis在Java的使用中,有两种序列化方式

1.默认序列化

实现类有Jackson2(值的序列化规则),string(键的序列化规则)

2.JDK序列化

2. 测试(在redis操作值)

存在很多api可以使用

1.opsForValue

2.opsForHash

直接存

通过map存值

取一个 值

取出整个对象,包括所有属性值

获取hashkeys(keys)

获取值values

判断存在性

set

3.失效时间

关键词:TimeUnit、seconds、minute

测试db和redis的效率

@value注解

就我自己而言,使用图形化界面redis manager更方便。类似数据库的navicat。

3. 业务实现(以若依框架的验证码为例)

逻辑:

查询数据现在redis里面查询,如果有直接拿出来,不查询数据库

如果没有,就查数据库,顺便把查出的数据放入redis

后端生成表达式1+1=?@2

用@符号进行字符串分割,前面的表达式转换成图片,转到前端进行展示。答案2存入redis中,与前端提交过来的登录表单匹配,如果正确就登陆成功,错误就登陆失败。

redis默认16个(0-15)数据库

前端:login.vue

getCodeImg()/api/login.js 调用资源登录js文件

写请求方法和请求头,过期时间

封装request请求方法

网络登录请求实时的方法:

request.js的axios封装的请求

开发,生产和测试环境

http://192.168.137.1/dev-api/captchaImage

请求后端的验证码图片

但是需要加上8080端口号,这里并没有加上

使用反向代理:url请求前端,进行代理,映射到后端,解决跨域问题

配置文件 vue.config.js

跨域代理举例:

验证码后端

http://192.168.137.1/dev-api/captchaImage

映射地址变成:

http://192.168.137.1//captchaImage

redis中验证码设置的有效期,两分钟

结语

以下是将 Redis 实战项目简化为 Excel 表格的形式,按场景、用途、数据结构、命令、技术栈和案例分类整理:希望这篇文章能够带你全面了解redis的潜力,让你的代码世界更加丰富多彩!

从实践中记忆更深刻,现在,拿起redis开始操作吧!!

参考资料:
我的账号文章

相关推荐
咩咩啃树皮13 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
鱟鲥鳚13 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
大模型码小白14 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司15 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
爱笑的源码基地16 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码
wuqingshun31415916 小时前
TCP超时重传机制是为了解决什么问题?
java
二宝哥17 小时前
CentOS 7.9 系统下 Redis 5.0.4 单机安装与源码编译安装指南
redis·centos
莫逸风19 小时前
【AgentScope 2.0】 0. 学习指南
java·llm·agent·agentscope
隔窗听雨眠19 小时前
Spring Boot在云原生时代的编程范式革新研究
spring boot·后端·云原生
z1234567898619 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程