【个人博客系统 × Redis】“最后的升级“ · 连接Redis · Redis的基本使用

news2025/1/15 12:43:14

【JavaEE】进阶 · 个人博客系统(7)

在这里插入图片描述

文章目录

  • 【JavaEE】进阶 · 个人博客系统(7)
    • 1. linux安装Redis
      • 1.1 通过yum商店下载Redis
      • 1.2 启动Redis
      • 1.3 操作Redis
    • 2. Redis的基本使用(关键字大小写不区分)
      • 2.1 set
      • 2.2 get
    • 3. windows可视化客户端远程连接Redis
      • 3.1 下载 Another-Redis-Desktop-Manager
      • 3.2 修改配置
      • 3.3 防火墙放行
      • 3.4 Another-Redis-Desktop-Manager 的基本使用
    • 4. spring boot项目连接Redis(java客户端)
      • 4.1 添加Redis依赖
      • 4.2 配置
      • 4.3 获得Redis操作器
        • 4.3.1 设置接口
        • 4.3.2 获值接口
        • 4.3.3 测试
    • 5. 项目升级:连接Redis
      • 5.1 原生写法
      • 5.2 官方提供的Redis持久化的方式:框架写法
        • 5.2.1 添加依赖
        • 5.2.2 修改配置
      • 5.3 被存储的自定义对象必须可以被序列化
    • 6. 项目部署注意事项
      • 6.1 安装和配置Redis
      • 6.2 打包部署

【JavaEE】进阶 · 个人博客系统(7)

1. linux安装Redis

1.1 通过yum商店下载Redis

yum -y install redis

在这里插入图片描述

1.2 启动Redis

redis-server /etc/redis.conf &

在这里插入图片描述

1.3 操作Redis

redis-cli

在这里插入图片描述

Ctrl C 可关闭这个进程(万能地杀死进程)

2. Redis的基本使用(关键字大小写不区分)

2.1 set

在这里插入图片描述

灰色部分为提示

在这里插入图片描述

2.2 get

在这里插入图片描述

灰色部分为提示

在这里插入图片描述

  • 中文被转义了~

正常情况下:

在这里插入图片描述

  • 键值对存在,行为是覆盖!

3. windows可视化客户端远程连接Redis

对于windows,一般是个人电脑,为项目的开发环境,所以本身是不需要所谓的缓存的,所以Redis官网现在没有支持windows的版本,也无所diao味

Releases · microsoftarchive/redis (github.com)

  • 微软自己搞了一个Redis,感兴趣的同学可以自行安装学习

而我们要用到的是一个,可视化客户端,便于观察Redis缓存内部情况,我们要进行远程连接,这个Redis是我们刚才下载的那个!

3.1 下载 Another-Redis-Desktop-Manager

这个软件可以连接远程Redis,进行观察,操作等等…

Another Redis Desktop Manager | 更快、更好、更稳定的Redis桌面(GUI)管理客户端,兼容Windows、Mac、Linux,性能出众,轻松加载海量键值 (goanother.com)

在这里插入图片描述

双击打开:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

当然,你第一次使用会遇到这种情况,也很正常!

在这里插入图片描述

我们需要进行一些配置上的操作!

3.2 修改配置

  1. 进入redis 配置文件的编写模式,redis 配置文件就是linux 下的 /etc/redis.conf ;
  2. 将 redis.conf 中的 “bind 127.0.0.1”注释掉;
  3. 将 redis.conf 中的“protected-mode yes” 改为“protected-mode no”;
  4. 保存并退出
  5. 使用命令“redis-cli shutdown”先关闭 redis 服务,再使用“redis-server /etc/redis.conf &”启动 redis 服务。

在这里插入图片描述

vim redis.conf

在这里插入图片描述

  • 这个位置是光标所在行

找到第61行,注释掉此行:

在这里插入图片描述

找到第80行,yes改为no

在这里插入图片描述

保存并退出:

在这里插入图片描述

关闭并开启redis:

redis-cli shutdown

在这里插入图片描述

redis-server /etc/redis.conf &
# &代表后台允许

在这里插入图片描述

现在可以连接Redis了吗?

在这里插入图片描述

还是不行,这是因为我们的服务器的防火墙没有对这个端口放行!

3.3 防火墙放行

在这里插入图片描述

在这里插入图片描述

确认后:

在这里插入图片描述

重新尝试远程连接:

在这里插入图片描述

成功啦啦啦啦啦😀

3.4 Another-Redis-Desktop-Manager 的基本使用

  1. 观察redis的键值对

测试用例:

redis-cli
set name xiaoma
set password 123456
set id 6

这个操作不支持多行复制过去操作~

在这里插入图片描述

id:

在这里插入图片描述

name:

在这里插入图片描述

password:

在这里插入图片描述

  1. 新增

在这里插入图片描述

本文章不涉及其他Redis的数据类型,仅仅是[key字符串]对[value字符串]

  • 在下一篇文章,再进行Redis的入门教学!

在这里插入图片描述

查看我们的机器里是否存在该键值对:

在这里插入图片描述

  1. 删除

在这里插入图片描述

在这里插入图片描述

查看我们的机器里是否存在该键值对:

在这里插入图片描述

  • nil代表无值

4. spring boot项目连接Redis(java客户端)

框架:

  1. Jedis
  2. Lettuce(主流) <— Spring Data Redis
    • 优点:支持集群以及并发
    • 官网:Lettuce

4.1 添加Redis依赖

在这里插入图片描述

在这里插入图片描述

如果你的版本不支持这个框架,可以将版本号改为:2.6.13(version标签内)

4.2 配置

  • 请确保服务器的这个端口开放!
#这个代表机器的redis的几个数据库里的第几个
spring.redis.database=1
#redis在机器里的端口号
spring.redis.port=6379
#这个是你的主机号的ip
spring.redis.host=175.178.62.164
#密码
spring.redis.password=

# 以下可省略 (有点像线程池的创建)
spring.redis.lettuce.pool.min-idle=5
spring.redis.lettuce.pool.max-idle=10
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-wait=1ms
spring.redis.lettuce.shutdown-timeout=100ms

参考第178行(可能):

在这里插入图片描述

  • 配置文件中设置为16,所以共16个数据库,代号:0 - 15

在可视化客户端也可以可以见到十六个数据库:DB0 - DB15,Redis也被称为非关系型数据库~

在这里插入图片描述

没密码就不用设置,或者设置为空

4.3 获得Redis操作器

以我们习以为常的方式:属性注入

@Autowired
private RedisTemplate redisTemplate;

通过调用相应的方法,获取需要用到的redis操作器:

在这里插入图片描述

这里选择opsForValue,就是我们所见的普通键值对类型了,key为String

4.3.1 设置接口

@RequestMapping("/set_val")
public void setVal(@RequestParam("key") String key, @RequestParam("value") String value) {
    redisTemplate.opsForValue()
            .set(key, value);
    //set的重载方法是可以设置其他属性的
}

4.3.2 获值接口

@RequestMapping("/get_val")
public String getVal(@RequestParam("key") String key) {
    return (String) redisTemplate.opsForValue()
            .get(key);
    //get的重载方法是可以设置其他属性的
}

4.3.3 测试

设置:

在这里插入图片描述

获值:

在这里插入图片描述

设置:
在这里插入图片描述

获值:

在这里插入图片描述

可视化客户端查看:

在这里插入图片描述

  • 这是那个set方法设置key的格式,key成了这个模样,不足为奇,但是用同一个操作器的get方法,可以正常获取到值!

对于Redis的其他操作就不在这里讲解了,感兴趣的同学自行学习~

5. 项目升级:连接Redis

5.1 原生写法

我们可以通过刚才简单的set和get操作,进行我们的开发,不过太麻烦了~

5.2 官方提供的Redis持久化的方式:框架写法

虽然原生写法也是框架写法,但是这里说的框架写法,是在这个基础上,再加一个框架,更加方便的开发!

5.2.1 添加依赖

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

下面那个在IDEA的spring项目的那个依赖搜索里找不到(虽然搜索到了两个,但是另外一个并不是我们想要的!),得手动添加,并刷新,如果国内源找不到,将版本号调低:2.6.13(version标签内的值)

5.2.2 修改配置

# Redis相关操作
spring.session.store-type=redis
server.servlet.session.timeout=1800
spring.session.redis.flush-mode=on_save
spring.session.redis.namespace=spring:session
spring.redis.host=175.178.62.164
spring.redis.password=
spring.redis.port=6379

这两步之后,我们的项目的Session会话就默认的持久化到了Redis里了~

  • 不用改源代码~
  • 我们也不需要在意使用那些接口的细节~
  • 你会发现多使用一个框架我们的自由度就没那么高,现在只存储Session的信息(原本自主存的话可以实现更多的东西),但是方便度更高了,自动Session持久化到Redis,这也其实差不多就够了~

可以配置Session持久化到MySQL,感兴趣的同学可以自行学习!

5.3 被存储的自定义对象必须可以被序列化

实现这个Serializable接口即可,框架就知道怎么序列化这个对象了!

在这里插入图片描述

6. 项目部署注意事项

6.1 安装和配置Redis

刚才完成了~

  • 项目用到redis一定要安装,或者连接的redis是别的机器的redis,那对应的机器就一定要有redis~

6.2 打包部署

包名自定义的方式:

在这里插入图片描述

打包:

在这里插入图片描述

在这里插入图片描述

部署到云服务器:

  • 杀死进程
  • 删除原项目
  • 拖进命令行下载
  • 启动项目
ps -ef|grep java

在这里插入图片描述

kill 19548

在这里插入图片描述

rm -rf demo-0.0.1-SNAPSHOT.jar nohup.out

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

nohup java -jar myblog.jar &
  1. nohup 代表不挂断的运行
  2. & 代表后台运行

在这里插入图片描述

在这里插入图片描述

访问网站登录:

在这里插入图片描述

  • 我为了方便,我的用户名是数据库直接硬生生改了的

可以进入需要登录校验的页面😀

在这里插入图片描述

可视化客户端出现了序列化后的session,我看不懂无所谓,那个框架看得懂 😀

在这里插入图片描述

这样就说明成功啦!


虽说是“最后的升级”,是因为这是我的讲解的最后一个升级了,但是还有更多的升级由你来发挥😀!!!

文章到此结束!谢谢观看
可以叫我 小马,我可能写的不好或者有错误,但是一起加油鸭🦆

代码:

redis-demo · 游离态/马拉圈2023年9月 - 码云 - 开源中国 (gitee.com)

myblog_system · 游离态/马拉圈2023年9月 - 码云 - 开源中国 (gitee.com)


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1000611.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SUMPRODUCT函数

SUMPRODUCT函数返回相应范围或数组的个数之和。 默认操作是乘法&#xff0c;但也可以执行加减除运算。 本示例使用 SUMPRODUCT 返回给定项和大小的总销售额&#xff1a; SUMPRODUCT 匹配项 Y/大小 M 的所有实例并求和&#xff0c;因此对于此示例&#xff0c;21 加 41 等于 62。…

UML-用例图

目录 一、UML 什么是UML&#xff1f; 为什么要用UML&#xff1f; UML图有哪些&#xff1f; 二、用例图 用例图摘要 用例图主要元素 1. 参与者&#xff08;Actor&#xff09; 2. 用例(Use Case) 3. 关系 4. 边界 用例图之间的关系 &#xff08;1&#xff09;参与者…

Figma实用插件速收藏!精选19个干货插件大公开!

Figma 如今有着大量的插件&#xff0c;在 UI/UX 设计领域&#xff0c;很多工作已经不用真的从零开始做了。用好 Figma 插件&#xff0c;往往能让设计工作事半功倍。不过其中的插件素质差别很大&#xff0c;需要仔细筛选。不过如果你选择了对的插件&#xff0c;合理的设置&#…

SpringCloud(17~21章):Alibaba入门简介、Nacos服务注册和配置中心、Sentinel实现熔断与限流、Seata处理分布式事务

17 SpringCloud Alibaba入门简介 17.1 why会出现SpringCloud alibaba Spring Cloud Netflix项目进入维护模式 https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now 说明 Spring Cloud Netflix Projects Entering Maintenance Mode 什么是维护模…

c高级day4(shell)

实现一个对数组求和的函数&#xff0c;数组通过实参传递给函数写一个函数&#xff0c;输出当前用户的uid和gid&#xff0c;并使用变量接收结果

20230911 Shell指令数组以及函数值传递,值返回

实现一个对数组求和的函数&#xff0c;数组通过实参传递给函数 #!/bin/bashfunction fun() {sum0for ((i0;i<$var;i))do(( sumarr[i] ))doneecho $sum } read -p "输入该数组个数: " var for((j0;j<$var;j)) doread -p "输入数组第$j个值: " arr[j] …

Jmeter引入外部jar包以满足加密数据的Post请求

目录 一、把项目打成jar包 1、创建一个Maven项目&#xff0c;并保证可以正常运行。 2、把工具类放置项目中&#xff0c;确保无报错且能够正常使用。 3、打包 4、验证 jar包是否有效 5、你想打多个工具类的包 二、在jmeter中使用 1、把jar包放到jmeter仓库下&#xff0c;…

Mixin从理论到实践

mixin从理论到实践 mixin从理论到实践一、什么是mixin二、使用mixin三、mixin的合并策略四、mixin辨析五、个人实践 mixin从理论到实践 一、什么是mixin mixin混入 — Vue.js (vuejs.org) 官方解释&#xff1a; 混入 (mixin) 提供了一种非常灵活的方式&#xff0c;来分发 Vue …

uni-app:自带的消息提示被遮挡的解决办法(自定义消息提示框)

效果&#xff1a; 代码&#xff1a; 1、在最外层或者根组件的模板中添加一个容器元素&#xff0c;用于显示提示消息。例如&#xff1a; <div class"toast-container" v-if"toastMessage"><div class"toast-content">{{ toastMessa…

shell脚本中分支结构、循环、以及函数的介绍和使用

练习 实现一个对数组求和的函数&#xff0c;数组通过实参传递给函数 #!/bin/bash function sum() {sum0for i in ${arr[*]}do((sumi))doneecho "数组和为&#xff1a;"$sum } read -p "请输入一个数组&#xff1a;" -a arr sum arr写一个函数&#xff0c…

华为云云服务器云耀L实例评测 | 从零开始:华为云云服务器L实例使用教程

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Mediasoup源码介绍

一、Mediasoup 整体结构 整个Mediasoup库通过Nodejs管理&#xff0c;比如整体逻辑、worker、router、producer、consumer...都是通过JS进行管理的。 其底层的数据传输是通过C部分进行控制的&#xff0c;通过NodeJs来控制C部分&#xff0c;以实现整体的数据传输效 二、Mediasou…

Python最好用的可视化库(从低级到高级)

今天&#xff0c;我将深入探讨Python中的数据可视化世界&#xff0c;更具体地说&#xff0c;我们如何利用一些官方库来可视化SQL查询的结果&#xff0c;已有的“轮子”可以让这个过程变得轻松愉快。我们接下来将分别给出几个库的简介及运行结果。 Matplotlib&#xff1a;你可靠…

想要精通算法和SQL的成长之路 - 课程表IV

想要精通算法和SQL的成长之路 - 课程表IV 前言一. 课程表IV &#xff08;拓扑排序&#xff09; 前言 想要精通算法和SQL的成长之路 - 系列导航 做这个题目之前可以回顾一下&#xff1a;课程表II 一. 课程表IV &#xff08;拓扑排序&#xff09; 原题链接 这道题目在课程表I…

通过Git Bash将本地文件上传到本地github

1. 新建一个仓库&#xff08; Repository&#xff09; 1.1登录Github&#xff0c;点击个人头像&#xff0c;点击Your repositories&#xff0c;点击New。 1.2 填写信息 Repository name: 仓库名称 Description(可选): 仓库描述介绍,不是必填项目。~~建议填写上哦&#xff01;…

排序算法:快速排序(三种排序方式、递归和非递归)

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关排序算法的相关知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通…

PMP中十大知识领域及敏捷部分

今天给大家分享一篇PMP考试中十大知识领域及敏捷部分。希望正在备考11月PMP的宝子们能够清楚地拿捏重难点&#xff0c;稳稳上岸&#xff01; 我是胖圆~欢迎大家关注留言&#xff01; 或者移步公众号【胖圆说PM】找我

SpringBoot-可视化监控

一、添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--采集应用的指标信息&#xff0c;prometheus--> <dependency…

牛客练习赛115 A Mountain sequence - 乘法原理

a 到 b有3条路&#xff0c;b到c有4条路&#xff0c;那a到c共有12种选择。 最大值作为顶点&#xff0c;统计每个数的数量&#xff0c;比如说最大值为9&#xff0c;且只有一个&#xff0c;7的数量为4 有的可能为 77779 77797 77977 79777 97777 共计5种可能性&#xff0c;设一…

windows 下载安装 mysql

windows 下载安装 mysql 官网地址&#xff1a;https://dev.mysql.com/ 下载地址&#xff1a;https://cdn.mysql.com//Downloads/MySQLInstaller/mysql-installer-community-8.0.34.0.msi 点击 Downloads 点击 MySQL Community (GPL) Downloads 点击 MySQL Installer for Window…