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

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 【个人博客系统 × Redis】“最后的升级” · 连接Redis · Redis的基本使用

【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
  1. nohup 代表不挂断的运行
  2. & 代表后台运行

访问网站登录:

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

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

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

这样就说明成功啦!

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
2天前
|
存储 缓存 监控
利用Redis构建高性能的缓存系统
在现代Web应用中,性能优化是提升用户体验和响应速度的关键。Redis作为一款开源的内存数据结构存储系统,因其出色的性能、丰富的数据结构和灵活的使用方式,成为了构建高性能缓存系统的首选工具。本文将探讨Redis在缓存系统中的应用,分析其优势,并通过实例展示如何结合Redis构建高效、可靠的缓存系统,以应对高并发、大数据量等挑战。
|
13天前
|
存储 缓存 监控
利用Redis构建高性能的缓存系统
在现今高负载、高并发的互联网应用中,缓存系统的重要性不言而喻。Redis,作为一款开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息代理。本文将深入探讨Redis的核心特性,以及如何利用Redis构建高性能的缓存系统,并通过实际案例展示Redis在提升系统性能方面的巨大潜力。
|
13天前
|
NoSQL Shell Redis
Redis热升级秘诀:保证高可用性的技术方案
Redis热升级方案允许在不中断业务的情况下,实现数千级别Redis的无缝更新。通过构建Redis Shell程序保存数据库状态,封装动态连接库,以及在运行时加载新版本库,保持客户端连接,该方法确保了业务连续性和高可用性,且升级仅需几毫秒,显著提升了系统效率。
395 6
|
13天前
|
存储 NoSQL 测试技术
Redis数据存储系统为什么快?
Redis的快速并非偶然,而是深思熟虑的设计理念的结果。通过将数据存储于内存、采用单线程模型、实现非阻塞I/O等独特的技术选择,Redis在高并发和低延迟方面展现了卓越的表现。
39 16
|
13天前
|
缓存 NoSQL Java
【亮剑】分布式锁是保证多服务实例同步的关键机制,常用于互斥访问共享资源、控制访问顺序和系统保护,如何使用注解来实现 Redis 分布式锁的功能?
【4月更文挑战第30天】分布式锁是保证多服务实例同步的关键机制,常用于互斥访问共享资源、控制访问顺序和系统保护。基于 Redis 的分布式锁利用 SETNX 或 SET 命令实现,并考虑自动过期、可重入及原子性以确保可靠性。在 Java Spring Boot 中,可通过 `@EnableCaching`、`@Cacheable` 和 `@CacheEvict` 注解轻松实现 Redis 分布式锁功能。
|
13天前
|
NoSQL 网络安全 Redis
【docker】部署的redis突然连接不上了
【docker】部署的redis突然连接不上了
33 1
|
13天前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
27 0
|
13天前
|
人工智能 前端开发 Java
Java语言开发的AI智慧导诊系统源码springboot+redis 3D互联网智导诊系统源码
智慧导诊解决盲目就诊问题,减轻分诊工作压力。降低挂错号比例,优化就诊流程,有效提高线上线下医疗机构接诊效率。可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。
232 10
|
13天前
|
负载均衡 监控 NoSQL
Redis的几种主要集群方案
【5月更文挑战第15天】Redis集群方案包括主从复制(基础,读写分离,手动故障恢复)、哨兵模式(自动高可用,自动故障转移)和Redis Cluster(官方分布式解决方案,自动分片、容错和扩展)。此外,还有Codis、Redisson和Twemproxy等工具用于代理分片和负载均衡。选择方案需考虑应用场景、数据量和并发需求,权衡可用性、性能和扩展性。
195 2
|
13天前
|
存储 监控 负载均衡
保证Redis的高可用性是一个涉及多个层面的任务,主要包括数据持久化、复制与故障转移、集群化部署等方面
【5月更文挑战第15天】保证Redis高可用性涉及数据持久化、复制与故障转移、集群化及优化策略。RDB和AOF是数据持久化方法,哨兵模式确保故障自动恢复。Redis Cluster实现分布式部署,提高负载均衡和容错性。其他措施包括身份认证、多线程、数据压缩和监控报警,以增强安全性和稳定性。通过综合配置与监控,可确保Redis服务的高效、可靠运行。
187 2