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


    JavaEE】进阶 · 个人博客系统(7)

    在这里插入图片描述

    【JavaEE】进阶 · 个人博客系统(7)

    1. linux安装Redis

    1.1 通过yum商店下载Redis

    yum -y install redis
    
    • 1

    在这里插入图片描述

    1.2 启动Redis

    redis-server /etc/redis.conf &
    
    • 1

    在这里插入图片描述

    1.3 操作Redis

    redis-cli
    
    • 1

    在这里插入图片描述

    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
    
    • 1

    在这里插入图片描述

    • 这个位置是光标所在行

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

    在这里插入图片描述

    找到第80行,yes改为no

    在这里插入图片描述

    保存并退出:

    在这里插入图片描述

    关闭并开启redis:

    redis-cli shutdown
    
    • 1

    在这里插入图片描述

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

    在这里插入图片描述

    现在可以连接Redis了吗?

    在这里插入图片描述

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

    3.3 防火墙放行

    在这里插入图片描述

    在这里插入图片描述

    确认后:

    在这里插入图片描述

    重新尝试远程连接:

    在这里插入图片描述

    成功啦啦啦啦啦😀

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

    1. 观察redis的键值对

    测试用例:

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

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

    在这里插入图片描述

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    参考第178行(可能):

    在这里插入图片描述

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

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

    在这里插入图片描述

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

    4.3 获得Redis操作器

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

    @Autowired
    private RedisTemplate redisTemplate;
    
    • 1
    • 2

    通过调用相应的方法,获取需要用到的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的重载方法是可以设置其他属性的
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    4.3.2 获值接口
    @RequestMapping("/get_val")
    public String getVal(@RequestParam("key") String key) {
        return (String) redisTemplate.opsForValue()
                .get(key);
        //get的重载方法是可以设置其他属性的
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    4.3.3 测试

    设置:

    在这里插入图片描述

    获值:

    在这里插入图片描述

    设置:
    在这里插入图片描述

    获值:

    在这里插入图片描述

    可视化客户端查看:

    在这里插入图片描述

    • 这是那个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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    下面那个在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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    这两步之后,我们的项目的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
    
    • 1
    kill 19548
    
    • 1
    rm -rf demo-0.0.1-SNAPSHOT.jar nohup.out
    
    • 1

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

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

    在这里插入图片描述

    在这里插入图片描述

    访问网站登录:

    在这里插入图片描述

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

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

    在这里插入图片描述

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

    在这里插入图片描述

    这样就说明成功啦!


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

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

    代码:

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

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


  • 相关阅读:
    BES 在大规模向量数据库场景的探索和实践
    【selenium4自动化工具的使用以及Junit5单元测试框架】
    杰理之AT 包格式【篇】
    WebGL 雾化
    Compose的一些小Tips - 可组合项的绘制
    SpringAOP的原理及仿写
    警惕!外贸常见的一些骗局!
    EaselJS 源码分析系列--第一篇
    Nginx搭建Rtmp流媒体服务,并使用Ffmpeg推流
    【C++ Primer Plus】第2章 开始学习C++
  • 原文地址:https://blog.csdn.net/Carefree_State/article/details/132816543