Redis【包括Redis 的安装+本地远程连接】

news2024/11/24 3:02:31

Redis

一、为什么要用缓存?

缓存定义

缓存是一个高速数据交换的存储器,使用它可以快速的访问和操作数据。

程序中的缓存

在我们程序中,如果没有使用缓存,程序的调用流程是直接访问数据库的;
在这里插入图片描述

如果多个程序调用一个数据库,那么调用流程就如下图:

在这里插入图片描述

所以不同程序调用一个数据库,会给数据库的压力增大,这个时候缓存的作用就体现出来了;

在这里插入图片描述

建立一个缓存系统,缓解数据库压力。

缓存的优点

  1. 缓存是 key-value 类型,存储结构简单,所以查询效率比较快

  2. 缓存是存储在内存中的,而一般的数据库是将数据存储在磁盘。

    内存操作>磁盘操作速度,因此缓存的操作和读取比较快

  3. 缓存可扩展性比较强,因此它的负载能力、更改、查询效率更快。

二、缓存分类

缓存大致分为两类:

  • 本地缓存
  • 分布式缓存

本地缓存也叫单机缓存,就是说可以应用在单机环境下的缓存。所谓的单机环境是指将服务部署在一台服务器上。

本地缓存只适用于当前系统。

分布式缓存是指可以应用在分布式系统中的缓存。所谓的分布式系统就是指一套服务部署到多台服务器,并且通过负载分发将用户的请求按照一定的规则分发到不同服务器。

三、常见缓存使用

本地缓存的常见使用: Spring Cache ,MyBatis的缓存

分布式缓存的常见使用:RedisMemcached

本地缓存:Spring Cache

SpringBoot 项目中,可以直接使用 Spring 内置的 Cache 【本地缓存】,只需要三个步骤:

  1. 开启缓存
  2. 操作缓存
  3. 调用缓存

【1】开启缓存

springbooot启动类上加上 @EnableCaching 注解。

package com.example.redis;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;

@SpringBootApplication
@EnableCaching // 开启缓存
public class RedisApplication {

    public static void main(String[] args) {
        SpringApplication.run(RedisApplication.class, args);
    }

}

【2】操作缓存

操作类【操作方法】

package com.example.redis.service;

import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

/**
 * @author SunYuHang
 * @date 2023-02-14 09:41
 * @ClassName : UserService  //类名
 */
@Service
public class UserService {
    @Cacheable(cacheNames = "user",key="#id")
    public String getUser(int id){
        //伪代码
        System.out.println("我进入了getUser方法");
        return "ID:"+id;
    }
}

【3】调用缓存

使用类

package com.example.redis.controller;

import com.example.redis.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author SunYuHang
 * @date 2023-02-14 09:43
 * @ClassName : UserController  //类名
 */
@RequestMapping("/user")
@RestController
public class UserController {

    @Autowired
    UserService userService;

    @RequestMapping("/get")
    public String getUser(int id){
        return userService.getUser(id);
    }
}

使用Postman进行测试

在这里插入图片描述

第一次进入getUser方法

在这里插入图片描述

有了缓存之后,我们第二次访问该方法
在这里插入图片描述

控制台就不会进行信息的打印了。

在这里插入图片描述

分布式缓存

在这里插入图片描述

RedisMemcached 有什么区别?

  • 存储方式不同: memcached 把数据全部存在内存中,断电后会挂掉,数据不能超过内存大小;Redis 有部分存在硬盘上,这样搞就能保证数据的持久性;
  • 数据支持类型: memcache 对数据类型支持相对简单; Redis 有复杂的数据结构;
  • 存储值大小不同:Redis 最大可以达到 512MB; memcache 只有 1MB。

**总结一下:**通常情况下,如果是单机Spring项目,会直接使用 Spring Cache 作为本地缓存;如果分布式环境一般使用 Redis

四、Redis 数据类型和使用

Redis 有 5 大基础数据类型:

  • String——字符串类型
  • Hash——字典类型
  • List——列表类型
  • Set——集合类型
  • ZSet——有序集合类型

其中最常用的就是字符串和字典类型。

下面我们先来进行一下Redis 的安装。

Redis 的安装

此处的 Redis 安装是针对 Linux 版本的安装, 由于 Redis 官方没有提供 Windows 版本, 只提供了 Linux 版本. 但是我们可以通过Windows 去 远程连接 Redis.【这里我使用的是xshell】

1.使用 yum 安装 Redis

使用如下命令, 将 Redis 安装到 Linux 服务器:

yum -y install redis

2.启动 Redis

使用如下命令, 以后台运行的方式启动 Redis:

redis-server /etc/redis.conf &

/etc/redis.conf 表示使用 Redis 默认的配置文件

& 表示后台运行

做了这两个步骤之后, 就可以在本地远程操控 Redis 了, 不过需要修改配置文件

3.操作 Redis

使用如下命令启动 Redis 客户端 :

redis-cli

在这里插入图片描述

4.本地远程连接

将 Redis 配置文件下载到本地. 该配置文件为 Linux 下的 /etc/redis.conf

先 cd 到 Redis 配置文件的路径下.

使用 sz 命令, 将文件下载到本地.

在这里插入图片描述

redis.conf 中的 “bind 127.0.0.1” 注释掉.

在这里插入图片描述

redis.conf 中的 :“protected-mode yes” 改为 “protected-mode no”.

在这里插入图片描述

将修改后的 redis.conf 上传至 Linux 下的 /etc 目录.

rm -rf redis.conf -> 删除旧的配置文件

在这里插入图片描述

将本地更新的配置文件拖拽到 xshell 中.

使用命令 “redis-cli shutdown” 先关闭 redis 服务, 再使用 “redis-server /etc/redis.conf &” 启动 redis 服务.
在这里插入图片描述

安装 Redis 可视化工具
下载链接 : AnotherRedisDesktopManager

安装好了之后, 先把 6379 端口放开 :

在这里插入图片描述

打开可视化工具, 新建一个连接.

  1. Host 填自己云服务器的外网IP.
  2. Port 填写 6379.

当连接建立成功之后, 我们在 redis 默认的数据库中可以看到刚才创建的键值对

在这里插入图片描述

当然也就可以在可视化界面操作 Redis 了.

Redis数据类型

【1】字符串类型

【2】字典类型

【3】列表类型

【4】集合类型

【5】有序集合类型

持续更新中~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/344156.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在原始的认知上找回自己

认知、欲望加恐惧,这三种要素在我们对一个事物的判断中都在起作用,只不过配比不一样,导致你的判断不一样。我们通常以为有了认知能力,就产生了认知,就如同面前有一个东西,你用照相机拍下来就成了一张照片—…

【算法基础】高精度除法

👦个人主页:Weraphael ✍🏻作者简介:目前是C语言 算法学习者 ✈️专栏:【C/C】算法 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论&#x1f4ac…

PN外加电场后电场变化

没有外加电场时(下面都是以外加反向电场分析) 中间两条实线假设是PN节在没有外加电场的情况下形成的一个内部电场边界。 形成原因 实用的半导体一般是混合物 P型半导体,实际上是一种4价和3价元素的混合物。化学中都知道达到4或8的外层电子…

论文浅尝 | KGE by Adaptive Limit Scoring Loss Using DWS

笔记整理:陈磊,天津大学硕士链接:https://ieeexplore.ieee.org/ielx7/6287639/7859429/08057770.pdf动机设计一个强大而有效的损失框架对于知识图嵌入模型区分正确和不正确的三元组至关重要。经典的基于边距的排名损失将正负三元组的分数限制…

极智AI | 算能SDK架构

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文介绍一下 算能SDK架构。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com…

华芯微特开发环境搭建-SWM34SVET6为例

SWM34S系列是cortex-M33,内核是arm-v8指令集,和其他cortex系列有差异,要新的工具版本支持(jlink要升级到V9以上,keil要升级到5.32以上)。 1.Keil要先安装5.36的版本,并取得版权(5.3…

【MYSQL中级篇】数据库数据查询学习

🍁博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 相关文章 文章名文章地址【MYSQL初级篇】入门…

网络安全-Kali更新源(APT)

网络安全-Kali更新源(APT) 这篇东东很少内容 Kali是基于乌班图开发出来的 这个APT不是攻击的那个APT 这个APT和centos里面的YUM是一样的 下面是介绍的一些国内的APT包,我自己用的阿里云 通俗点怎么理解呢,你手机里面的应用市场,苹…

【闲聊】我用ChatGPT参加了大数据面试

用Chat GPT试了试面试题,回答得比较简单。 问:你可以以应聘者的身份参加一场大数据程序员面试吗 答:可以 ,如果您符合面试要求,可以参加大数据程序员面试。 问:那么为什么你要投递大数据开发这个岗位 答&am…

数据结构总结

数据结构总结排序算法冒泡排序选择排序插入排序希尔排序堆排序快速排序算法归并排序计数排序基数排序树红黑树基本概念规则B树基础知识规则B树图回溯算法并查集拓扑排序其他算法KMP算法例题数组类求最大和子数组求子数组最大乘积删除重复链表元素十大排序算法参考 排序算法 冒…

16:00面试,16:09就出来了 ,问的实在是太...

从外包出来,没想到算法死在另一家厂子 自从加入这家公司,每天都在加班,钱倒是给的不少,所以也就忍了。没想到8月一纸通知,所有人不许加班,薪资直降30%,顿时有吃不起饭的赶脚。 好在有个兄弟内…

情人节快到了,我部署了一套情侣头像小程序,并过审了

最近在学习如何部署微信小程序,目的就是像拥有一个属于自己的小程序 之前做的是一个微信公众号,靠自然的流量虽然也开通了流量主,但是每天收益就是那0.0几的,所有寻思看能不能做一个小程序出来。不会写小程序的我,也只能用现成的…

IO流01_字节字符流、缓冲流、标准输入、输出流、打印流

文章目录①. IO流概述及分类②. 字节输入流 - FileInputStream③. 字节输出流 - FileOutputStream④. 字符输入流 - FileReader⑤. 字符输出流 - FileWriter⑥. 字节缓冲流 - Buffered⑦. 掌握 - 相关流习题操作⑧. 标准输入、输出流(了解)⑨. 打印流 - PrintStream、PrintWrit…

Retinanet网络与focal loss损失

1.损失函数 1)原理 本文一个核心的贡献点就是 focal loss。总损失依然分为两部分,一部分是分类损失,一部分是回归损失。 在讲分类损失之前,我们来回顾一下二分类交叉熵损失 (binary_cross_entropy)。 计…

算法设计与分析(屈婉玲)视频笔记day2

序列求和的方法 数列求和公式 等差、等比数列与调和级数 求和的例子 二分检索算法 二分检索运行实例 2 n 1个输入 比较 t 次的输入个数 二分检索平均时间复杂度 估计和式上界的放大法 放大法的例子 估计和式渐近的界 估计和式渐近的界 小结 • 序列求和基本公式:…

使用 CSS 变量更改多个元素样式

使用 CSS 变量更改多个元素样式 var() 函数用于插入自定义的属性值,如果一个属性值在多处被使用,该方法就很有用。 custom-property-name 是必需的, 自定义属性的名称,必需以 – 开头。 value 可选。备用值,在属性不存在的时候使…

牛客网Python篇数据分析习题(六)

1.某公司计划举办一场运动会,现有运动会项目数据集items.csv。 包含以下字段: item_id:项目编号; item_name:项目名称; location:比赛场地。 有员工报名情况数据集signup.csv。包含以下字段: employee_id&a…

高性能(二)

三、读写分离和分库分表 1.读写分离 1.1 概述 将数据库的读写操作分散到不同的数据库节点上 通常一主多从一台主数据库负责写,多台从数据库负责读。 主库和从库之间会进行数据同步,以保证从库中数据的准确性。 1.2 问题及解决 1.2.1 问题 主从同…

ChatGPT眼中的产品经理是这样的

在玩ChatGPT的时候,突发奇想,ChatGPT对产品经理的认知是啥样呢?于是我找了几个大家都比较关注的产品经理问题,看看ChatGPT是如何回答的。1、产品经理可以干一辈子嘛?2、产品经理的核心竞争力是啥?3、产品经…

【本周特惠课程】深度学习6大模型部署场景(Pytorch+NCNN+MNN+Tengine+TensorRT+微信小程序)速成!...

前言欢迎大家关注有三AI的视频课程系列,我们的视频课程系列共分为5层境界,内容和学习路线图如下:第1层:掌握学习算法必要的预备知识,包括Python编程,深度学习基础,数据使用,框架使用…