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

news2024/11/19 14:31:33

【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,如果在本地可以写127.0.0.1
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里了~

如果redis在本地,就可以写127.0.0.1

  • 不用改源代码~
  • 我们也不需要在意使用那些接口的细节~
  • 你会发现多使用一个框架我们的自由度就没那么高,现在只存储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/1011342.html

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

相关文章

Lombok中的@Builder注解的使用

Lombok中的Builder注解的使用 作用 Builder注解的作用主要是用来生成对象&#xff0c;并且可以为对象链式赋值。 引入依赖 因为Builder注解是lombok中的东西&#xff0c;所以第一步我们需要引入lombok的依赖&#xff0c;如下图&#xff1a; 第二步给实体类加上Builder注解…

每日一博 - Token Based Authentication VS HMAC Authentication 实现web安全

文章目录 概念HMAC工作原理 概念 Token Based Authentication和HMAC&#xff08;Hash-based Message Authentication Code&#xff09;Authentication都是用于身份验证和数据完整性验证的安全机制&#xff0c;但它们有不同的工作方式和适用场景。以下是它们的主要区别和比较&a…

idea把项目打成jar包步骤详解

最近产品需要预研一个小功能&#xff0c;开始后在本地开发测试好之后&#xff0c;需要打成jar提供出去&#xff0c;今天弄完了&#xff0c;决定把这个步骤记录下来&#xff0c;便于以后轻车熟路。 打成jar要有mian方法的入口&#xff0c;所以我们在代码中需要定义一个main方法&…

学Python的漫画漫步进阶 -- 第七步

学Python的漫画漫步进阶 -- 第七步 七、字符串7.1 字符串的表示方式7.1.1 普通字符串7.1.2 原始字符串7.1.3 长字符串 7.2 字符串与数字的相互转换7.2.1 将字符串转换为数字7.2.2 将数字转换为字符串 7.3 格式化字符串7.3.1 使用占位符7.3.2 格式化控制符 7.4 操作字符串7.4.1 …

四、数学建模之图与网络模型

1.定义 2.例题及软件代码求解 一、定义 1.图和网络是相关概念 &#xff08;1&#xff09;图&#xff08;Graph&#xff09;&#xff1a;图是数学和计算机科学中的一个抽象概念&#xff0c;它由一组节点&#xff08;顶点&#xff09;和连接这些节点的边组成。图可以是有向的&…

VSCode配置c/c++环境 MinGW-W64 下载、安装与配置(支持最新版的GCC,目前 GCC 13.2.0) 彻底删除vscode(包括插件及配置!)

目录 一、简介 二、下载 1 旧版安装&#xff08;8.1.0&#xff09; 从 sourceforge.net 下载 2 新版安装(本次采用较新版本~~~) 从 github 下载 从 镜像站点 下载 自己编译 三、安装与配置 1. 在线安装&#xff08;这里仅作参考了解&#xff09; 2. 离线安装&…

JavaScript 知识扫盲

JavaScript 知识扫盲 写在前面一、JavaScript 写入形式二、常用输入输出三、JS 是动态类型语言四、运算符五、数组1、数组创建2、获取和修改数组元素3、新增元素4、删除元素 六、函数七、对象1、对象的创建2、属性方法的使用 八、JavaScript 和 Java 对比九、事件1、常见事件2、…

【MySQL系列】MySQL数据库索引详解

目录 一、为什么要用索引&#xff1f; 二、什么是索引&#xff1f; 三、MySQL索引使用场景 四、索引的原理 五、MySQL的存储引擎 六、索引的数据结构 七、索引如何使用 八、实际使用示例 九、优缺点、使用建议和注意事项 十、为什么Mysql不选择Hash索引&#xff1f; …

k8s集群中流水线部署微服务

k8s集群中流水线发布微服务 一、流水线部署微服务部署流程 二、微服务发布流程 pipeline {agent {node {label maven}}parameters {string(name: PROJECT_VERSION, defaultValue: v1.0, description: )string(name: PROJECT_NAME, defaultValue: , description: )}environment…

json转换

json转html {"DS": [{"PROVINCE": "陕西省","ADMIN_CODE_CHN": "610600","STATION_ID_C": "53845","LON": "109.4497","V31001_S": 10,"V31001_X": 0},{&quo…

【前端知识】+new Date()是什么?

一、new Date()的使用 new Date()是JavaScript中用于获取当前日期和时间的内置函数。它返回一个表示当前日期和时间的Date对象。如下所示&#xff1a; 通过Date.prototype可以查看Date对象的所有方法&#xff1a; constructor: ƒ Date() getDate: ƒ getDate() getDay: ƒ …

学习笔记|IO中断|中断号大于31|中断优先级|简易中央门禁|STC32G单片机视频开发教程(冲哥)|第十六集:IO中断

文章目录 1.什么是IO中断?2.IO中断的用法13.1.3 端口中断模式配置寄存器(PxIM0&#xff0c;PxIM1)13.1.1 端口中断使能寄存器&#xff08;PxINTE)13.1.2端口中断标志寄存器(PxINTF)13.2 范例程序3.1.编写P35口的IO中断实现&#xff1a; 3.中断优先级的设置3.1 为什么会出现数码…

C++ 算法学习 之 vector assign

参考c官方手册 vector::assign是C标准模板库中的一个函数&#xff0c;它的主要功能是给vector容器重新赋值。具体来说&#xff0c;vector::assign函数会删除vector中的所有元素&#xff0c;并根据用户提供的参数重新填充。 这个函数有三种形式&#xff1a; template <cla…

基于SpringBoot蜗牛兼职网的设计与实现【附PPT|万字文档(LW)和搭建文档】

主要功能 前台界面&#xff1a; ①首页、兼职信息推荐、查看更多等 ②职位申请、申请日期、上传简历、点击下载简历、留言反馈等 ③个人中心、上传图片、更新信息等 后台登录&#xff1a; ①用户登录&#xff1a; 个人中心、修改密码、个人信息、职位申请管理 ②企业登录&…

基于STM32+华为云IOT设计的智能衣柜

一、项目介绍 随着智能家居的发展&#xff0c;人们对于家居设备的智能化和远程控制需求越来越高。智能衣柜作为智能家居的一部分&#xff0c;可以提供衣物存储和保护的功能&#xff0c;并通过传感器和互联网技术实现对衣柜内部环境的监测和控制&#xff0c;为用户提供更好的使…

Map面试常见问题

Map的特点有哪些&#xff1f; Java中的Map是一种接口&#xff0c;它表示一种将键映射到值的对象。Map的特点主要有以下几点&#xff1a; 键的唯一性&#xff1a;每个键在Map中只能出现一次&#xff0c;不能重复。不保证键的顺序&#xff1a;Map不保证键的插入顺序或者遍历顺序…

MFC 如何启用/禁用菜单(返灰/不可点击状态)

1、为页面&#xff08;窗口&#xff09;添加一个菜单栏和子菜单 2、在XXDlg.h文件中定义一个菜单栏变量和bool变量 CMenu m_Menu; //菜单变量 bool m_EnableMenu;//菜单栏中某个子菜单禁用/启用&#xff08;变灰&#xff09;的控制变量3、在OnInitDialog函数中进行初始化&…

智囊AI-基于 ChatGPT 的 AI 工具产品 你的私人AI助手

智囊AI是一款基于 ChatGPT 的 AI 工具产品&#xff0c;主打免费、智能、方便&#xff0c;可以在此雇佣各种各样的免费智囊进行对话、自己创造和分享智囊、共享有趣有用的对话等。不过使用需要注册登录&#xff0c;可以使用自己的openai key或者使用网站提供的api key&#xff0…

【2023年11月第四版教材】第13章《资源管理》(第一部分)

第13章《资源管理》&#xff08;第一部分&#xff09; 1 章节说明2 管理基础2.1 术语2.2 项目经理的权力有5种来源2.3 优秀团 队的建设5个阶段2.4 激励理论2.4.1 马斯洛需求层次理论2.4.2 赫茨伯格双因素理论&#xff1a;★★★ 2.4.3 X理论&#xff08;不好&#xff09;步丫理…

Postman使用_参数设置和获取

文章目录 参数引用内置动态参数手动添加参数脚本设置参数脚本获取参数 参数就像变量一样&#xff0c;它可以是固定的值&#xff0c;也可以是变化的值&#xff0c;比如&#xff1a;会根据一些条件或其他参数进行变化。我们如果要使用该参数就需要引用它。 参数引用 引用动态参数…