医院信息化与智能化系统(11)
医院信息化与智能化系统(11)
这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置
如果你想通过文字描述或代码画流程图,可以试试PlantUML
,告诉GPT你的文件结构,让他给你对应的代码
预约挂号微服务模块搭建
前端知识点补充,此章节不会详细讲具体前端的每个知识点
1、添加缓存
添加缓存时为了提高查询速度,一些不经常修改
,固定的数据
,经常查询
的数据适合去做缓存
使用Spring Cache
+Redis
缓存数据
第一步是在service-util
模块添加相关依赖,因为缓存也是公共使用,所有的service模块都有可能使用缓存。
spring-boot-starter-data-redis
是 Spring Boot 提供的一个启动器,用于简化 Spring Data Redis 的配置和使用。它集成了 Redis 的基本功能,让开发者能够更方便地操作 Redis 数据库,包括对键值对的读写操作、数据缓存等。
commons-pool2
是一个通用的对象池库。它提供了创建和管理对象池的功能,可以用来提高资源的复用性,减少对象的创建和销毁开销。在 Spring Data Redis 中,commons-pool2 通常用于管理 Redis 连接池
,以提高 Redis 连接的效率和性能。·
第二步在config文件夹下添加配置类RedisConfig
添加注解@EnableCaching
,表示支持缓存
方法1:public KeyGenerator keyGenerator()
这个方法定义了一个自定义的 KeyGenerator
,通常在 Spring 的缓存配置中使用。KeyGenerator 接口用于生成缓存键
,以便在缓存中唯一标识每个缓存项。
生成键的逻辑:
- 首先,使用 StringBuilder 创建一个字符串。
- 将目标对象的类名和方法名添加到字符串中。
- 然后,将所有参数的字符串形式拼接到这个字符串后面。
- 最终,这个字符串将作为缓存的键返回。
方法2:public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
该方法配置了一个 RedisTemplate
,使其能够连接 Redis 数据库
并使用 JSON 格式存储和读取对象
。这种配置非常适合在 Spring Boot 应用中使用 Redis 进行数据缓存和存储时,确保对象可以方便地序列化和反序列化。
方法3: public CacheManager cacheManager(RedisConnectionFactory factory)
该方法配置了一个使用 Redis 作为缓存存储的 CacheManager
,为应用程序提供了高效的缓存功能。通过 JSON 格式序列化对象,避免了乱码问题,同时设置了过期时间,确保缓存数据的及时更新。这样配置后的缓存管理器可以用于处理缓存数据的读写操作,提高应用的性能和响应速度。
在service-cmn模块的配置文件application.properties
添加redis配置,(端口号
、IP
、Redis数据库编号
(Redis 默认有 16 个数据库,索引从 0 到 15))
如果方法2、3有编译报错,在其上添加注解 @SuppressWarnings("all")
Xshell–Redis操作
首先默认之前Redis配置都配置好了,包括下载、解压、设置IP、连接Xshell
使用cd
命令进入Redis目录 (我的是cd /opt
)
随后启动服务:redis-server /myredis/redis7.conf
查看与 Redis 相关的进程 ps -ef | grep redis
随后输入redis-cli -a xxx -p 6379
命令其中xxx是你设置的密码
使用Spring Cache
注解 | 功能描述 | 适用场景 |
---|---|---|
@Cacheable | 从缓存中获取数据,如果缓存中没有,则执行方法并将结果放入缓存 | 查询操作,尤其是频繁读取但不常修改的数据 |
@CachePut | 每次执行方法时都将结果放入缓存,不会检查缓存 | 更新操作,需要确保缓存与数据库保持一致 |
@CacheEvict | 清除缓存中的数据 | 删除操作,或需要更新缓存时 |
首先在DictServiceImpl
类观察findChildData
方法,在它上面添加@Cacheable(value = "dict",keyGenerator = "keyGenerator")
注释,如果keyGenerator
编译报错,可能是导入的包不对,应该是:
import org.springframework.cache.annotation.Cacheable;
其中
value = "dict":
指定缓存的名称为 “dict”keyGenerator = "keyGenerator":
指定自定义的键生成器为 “keyGenerator”。这意味着在缓存时,缓存的键将通过名为 keyGenerator 的 Bean 生成。
importDictData
方法上添加注释@CacheEvict(value = "dict", allEntries=true)
,执行该方法时清除指定缓存区域 dict
中的所有条目
测试:如果redis拒绝访问
1、在Linux终端关闭防火墙
systemctl status firewalld.service
查看防火墙状态systemctl disable firewalld.service
关闭防火墙
2、更改redis.conf配置
- bind 0.0.0.0
- protected-mode no
3、更改虚拟机网络设置为桥接模式
这一步非常的重要,桥接模式是可以允许外界访问
虚拟机的,我是根据该视频进行配置
其中里面关于BOOTPORTO设置为static
,使得虚拟机IP为静态。
测试结果:
key命名规则:
包名+类名+方法名
2、配置nginx
service-hosp占用接口为8201
,而service-cmn占用的接口为8202
,端口不一致导致前端想同时调用
这两个模块成了问题。
这里使用windows版本nginx-1.12.0
解压后打开conf\nginx.conf
,在http{}
内添加该段代码:
listen 9001:
该虚拟服务器监听本地的 9001 端口
server_name localhost:
指定服务器名称为 localhost。
location ~ /hosp/:
匹配所有以 /hosp/ 开头的请求路径。这些请求会被转发(反向代理)到 http://localhost:8201
。
...
server {listen 9001;server_name localhost;location ~ /hosp/ { proxy_pass http://localhost:8201;}location ~ /cmn/ { proxy_pass http://localhost:8202;}
}
在终端进入nginx-1.12.0
文件并输入命令nginx.exe
(不要关闭终端),在前端修改服务端口:
BASE_API: '"http://localhost:9001"'
并在后端同时启动service.hosp
和service.cmn
3、MongoDB
首先在Linux安装Docker
安装Docker具体步骤
-
首先确保Linux安装了
gcc编译环境
以及对应c++库环境(之前有讲解) -
安装需要的软件包
yum install -y yum-utils
-
设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
更新yum软件包索引
yum makecache fast
-
安装Docker CE
docker-ce docker-ce-cli containerd.io
-
启动Docker
systemctl start docker
ps -ef|grep docker
注意事项:使用docker的pull
,因为是国外网站,所以很容易就报错:
docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled
解决方法1:找一个好的镜像网站,随后配置到/etc/docker/daemon.json文件
中
解决方法2:给Docker
| 虚拟机
配置代理,这是给Docker配置的教程(前提需要有代理)[记得把windows防火墙关了!
]
建议配置时,用本机网络IP配置,不要用127.0.0.1
Monge安装
- 拉取镜像
docker pull mongo:latest
下载 - 创建和启动容器
docker run -d --restart=always -p 27017:27017 --name mymongo -v /data/db:/data/db -d mongo
- 进入容器
docker exec -it mymongo /bin/bash
这里mymongo和 /bin之间有一个空格
,不能忽略
4.进入monge
mongo
|mongosh
6.0以上用后面的命令