【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 修改配置
- 进入redis 配置文件的编写模式,redis 配置文件就是linux 下的 /etc/redis.conf ;
- 将 redis.conf 中的 “bind 127.0.0.1”注释掉;
- 将 redis.conf 中的“protected-mode yes” 改为“protected-mode no”;
- 保存并退出
- 使用命令“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 的基本使用
- 观察redis的键值对
测试用例:
redis-cli
set name xiaoma
set password 123456
set id 6
这个操作不支持多行复制过去操作~
id:
name:
password:
- 新增
本文章不涉及其他Redis的数据类型,仅仅是[key字符串]对[value字符串]
- 在下一篇文章,再进行Redis的入门教学!
查看我们的机器里是否存在该键值对:
- 删除
查看我们的机器里是否存在该键值对:
- nil代表无值
4. spring boot项目连接Redis(java客户端)
框架:
- Jedis
- 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 &
nohup
代表不挂断的运行&
代表后台运行
访问网站登录:
- 我为了方便,我的用户名是数据库直接硬生生改了的
可以进入需要登录校验的页面😀
可视化客户端出现了序列化后的session,我看不懂无所谓,那个框架看得懂 😀
这样就说明成功啦!
虽说是“最后的升级”,是因为这是我的讲解的最后一个升级了,但是还有更多的升级由你来发挥😀!!!
文章到此结束!谢谢观看
可以叫我 小马,我可能写的不好或者有错误,但是一起加油鸭🦆!代码:
redis-demo · 游离态/马拉圈2023年9月 - 码云 - 开源中国 (gitee.com)
myblog_system · 游离态/马拉圈2023年9月 - 码云 - 开源中国 (gitee.com)