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

【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

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

1.2 启动Redis

redis-server /etc/redis.conf &

在这里插入图片描述

1.3 操作Redis

redis-cli

在这里插入图片描述

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

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

2.1 set

在这里插入图片描述

灰色部分为提示

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

2.2 get

在这里插入图片描述

灰色部分为提示

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

  • 中文被转义了~

正常情况下:

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

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

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)

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

双击打开:

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

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

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

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

在这里插入图片描述

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

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

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

  • 这个位置是光标所在行

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

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

找到第80行,yes改为no

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

保存并退出:

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

关闭并开启redis:

redis-cli shutdown

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

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

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

现在可以连接Redis了吗?

在这里插入图片描述

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

3.3 防火墙放行

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

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

确认后:

在这里插入图片描述

重新尝试远程连接:

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

成功啦啦啦啦啦

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

  1. 观察redis的键值对

测试用例:

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

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

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

id:

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

name:

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

password:

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

  1. 新增

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

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

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

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

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

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

  1. 删除

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

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

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

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

  • nil代表无值

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

框架:

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

4.1 添加Redis依赖

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

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

如果你的版本不支持这个框架,可以将版本号改为: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行(可能):

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

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

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

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

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

4.3 获得Redis操作器

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

@Autowired
private RedisTemplate redisTemplate;

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

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

这里选择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 测试

设置:

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

获值:

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

设置:
【个人博客系统 × Redis】“最后的升级” · 连接Redis · Redis的基本使用_第35张图片

获值:

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

可视化客户端查看:

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

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

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

5. 项目升级:连接Redis

5.1 原生写法

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

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

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

5.2.1 添加依赖

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-data-redisartifactId>
dependency>
<dependency>
    <groupId>org.springframework.sessiongroupId>
    <artifactId>spring-session-data-redisartifactId>
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接口即可,框架就知道怎么序列化这个对象了!

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

6. 项目部署注意事项

6.1 安装和配置Redis

刚才完成了~

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

6.2 打包部署

包名自定义的方式:

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

打包:

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

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

部署到云服务器:

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

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

kill 19548

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

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

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

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

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

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

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

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

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

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

访问网站登录:

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

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

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

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

这样就说明成功啦!


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

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

代码:

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

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


你可能感兴趣的:(JavaEE,redis,数据库,缓存,java,java-ee,spring)