当前位置: 首页 > news >正文

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

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 {@AutowiredUserService 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】有序集合类型

持续更新中~~~

相关文章:

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

Redis 一、为什么要用缓存? 缓存定义 缓存是一个高速数据交换的存储器,使用它可以快速的访问和操作数据。 程序中的缓存 在我们程序中,如果没有使用缓存,程序的调用流程是直接访问数据库的; 如果多个程序调用一个数…...

深度学习训练营_第P3周_天气识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章:Pytorch实战 | 第P3周:彩色图片识别:天气识别**🍖 原作者:K同学啊|接辅导、项目定制**␀ 本次实验有两个新增任务&…...

“华为杯”研究生数学建模竞赛2006年-【华为杯】C题:维修线性流量阀时的内筒设计问题(附获奖论文及matlab代码)

赛题描述 油田采油用的油井都是先用钻机钻几千米深的孔后,再利用固井机向四周的孔壁喷射水泥砂浆得到水泥井管后形成的。固井机上用来控制砂浆流量的阀是影响水泥井管质量的关键部件,但也会因磨损而损坏。目前我国还不能生产完整的阀体,固井机仍依赖进口。由于损坏的内筒已…...

数据结构:带环单链表基础OJ练习笔记(leetcode142. 环形链表 II)(leetcode三题大串烧)

目录 一.前言 二.leetcode160. 相交链表 1.问题描述 2.问题分析与求解 三.leetcode141. 环形链表 1.问题描述 2.代码思路 3.证明分析 下一题会用到的重要小结论: 四.leetcode142. 环形链表 II 1.问题描述 2.问题分析与求解 Judgecycle接口&#xf…...

数模美赛如何找数据 | 2023年美赛数学建模必备数据库

2023美赛资料分享/思路答疑群:322297051 欧美相关统计数据(一般美赛这里比较多) 1、http://www.census.gov/ 美国统计局(统计调查局或普查局)官方网站 The Census Bureau Web Site provides on-line access to our …...

SSTI漏洞原理及渗透测试

模板引擎(Web开发中) 是为了使 用户界面 和 业务数据(内容)分离而产生的,它可以生成特定格式的文档, 利用模板引擎来生成前端的HTML代码,模板引擎会提供一套生成HTML代码的程序,之后…...

【算法基础】高精度除法

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

optimizer.zero_grad(), loss.backward(), optimizer.step()的理解及使用

optimizer.zero_grad,loss.backward,optimizer.step用法介绍optimizer.zero_grad():loss.backward():optimizer.step():用法介绍 这三个函数的作用是将梯度归零(optimizer.zero_grad())&#x…...

融资、量产和一栈式布局,这家Tier 1如此备战高阶智驾决赛圈

作者 | Bruce 编辑 | 于婷从早期的ADAS,到高速/城市NOA,智能驾驶的竞争正逐渐升级,这对于车企和供应商的核心技术和产品布局都是一个重要的考验。 部分智驾供应商已经在囤积粮草,响应变化。 2023刚一开年,智能驾驶领域…...

centos7.8安装oralce11g

文章目录环境安装文件准备添加用户操作系统环境配置解压安装问题解决创建用户远程连接为了熟悉rman备份操作,参照大神的博客在centos中安装了一套oracle11g,将安装步骤记录如下环境安装文件准备 这里准备一台centos7.8 虚拟机 配置ip 192.168.18.100 主…...

【蓝桥杯集训·每日一题】AcWing 3956. 截断数组

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴一维前缀和一、题目 1、原题链接 3956. 截断数组 2、题目描述 给定一个长度为 n 的数组 a1,a2,…,an。 现在,要将该数组从中间截断,得到三个非空子…...

万丈高楼平地起:Linux常用命令

目录 系统管理命令 man命令 ls命令 cd命令 useradd命令 passwd命令 free命令 whoami命令 ps命令 date命令 pwd命令 shutdown命令 文件目录管理命令 touch命令 cat命令 mkdir命令 rm命令 cp命令 mv命令 find命令 more指令 less指令 head指令 tail指令 …...

Linux(Linux的连接使用)

连接Linux我们一般使用CRT或者Xshell工具进行连接使用。 如CRT使用SSH的方式 输出主机,账户,密码那些就可以连接上了。 Linux系统是一个文件型操作系统,有一句话说Linux的一切皆是文件。Linux系统的启动大致有下面几个步骤 Linux系统有7个运…...

Unity中画2D图表(2)——用XChart包绘制散点分布图 + 一条直线方程

散点图用于显示关系。 对于 【相关性】 ,散点图有助于显示两个变量之间线性关系的强度。 对于 【回归】 ,散点图常常会添加拟合线。 举例1:你可以展示【年降雨量】与【玉米亩产量】的关系 举例2:你也可以分析各个【节假日】与【大…...

Go 排序包 sort

写在前面的使用总结: 排序结构体 实现Len,Less,Swap三个函数 package main import ( "fmt" "sort") type StuScore struct { name string score int } type StuScores []StuScore func (s StuScores) Len(…...

Java Email 发HTML邮件工具 采用 freemarker模板引擎渲染

Java Email 发HTML邮件工具 采用 freemarker模板引擎 1.常用方式对比 Java发送邮件有很多的实现方式 第一种&#xff1a;Java 原生发邮件mail.jar和activation.jar <!-- https://mvnrepository.com/artifact/javax.mail/mail --> <dependency><groupId>jav…...

CNI 网络流量分析(六)Calico 介绍与原理(二)

文章目录CNI 网络流量分析&#xff08;六&#xff09;Calico 介绍与原理&#xff08;二&#xff09;CNIIPAM指定 IP指定非 IPAM IPCNI 网络流量分析&#xff08;六&#xff09;Calico 介绍与原理&#xff08;二&#xff09; CNI 支持多种 datapath&#xff0c;默认是 linuxDa…...

短视频标题的几种类型和闭坑注意事项

目录 短视频标题的几种类型 1、悬念式 2、蹭热门式 3、干货式 4、对比式方法 5、总分/分总式方法 6、挑战式方式 7、启发激励式 8、讲故事式 02注意事项 1、避免使用冷门、生僻词汇 标题是点睛之笔&#xff0c;核心是视频内容 短视频标题的几种类型 1、悬念式 通过…...

操作系统——1.操作系统的概念、定义和目标

目录 1.概念 1.1 操作系统的种类 1.2电脑的组成 1.3电脑组成的介绍 1.4操作系统的概念&#xff08;定义&#xff09; 2.操作系统的功能和目标 2.1概述 2.2 操作系统作为系统资源的管理者 2.3 操作系统作为用户和计算机硬件间的接口 2.3.1用户接口的解释 2.3.2 GUI 2.3.3接…...

【html弹框拖拽和div拖拽功能】原生html页面引入vue语法后通过自定义指令简单实现div和弹框拖拽功能

前言 这是html版本的。只是引用了vue的语法。 这是很多公司会出现的一种情况&#xff0c;就是原生的页面&#xff0c;引入vue的语法开发 这就导致有些vue上很简单的功能。放到这里需要转换一下 以前写过一个vue版本的帖子&#xff0c;现在再加一个html版本的。 另一个vue版本…...

Android开发避坑指南:registerForActivityResult找不到?可能是依赖版本惹的祸

Android开发实战&#xff1a;全面解析registerForActivityResult的正确使用与版本适配 在Android应用开发中&#xff0c;Activity之间的数据传递一直是核心功能之一。随着Jetpack组件的不断演进&#xff0c;Google推出了registerForActivityResult这一现代化API来替代传统的sta…...

电磁学核心概念与解题框架精讲(猴博士风格)

1. 电磁学基础概念拆解&#xff1a;从场强到电势 电场强度E和电势U是电磁学中最基础的两个物理量&#xff0c;就像描述一个人需要身高和体重两个指标一样。很多同学刚开始学电磁学时容易混淆这两个概念&#xff0c;我用一个简单的类比帮大家理解&#xff1a;想象电场强度就像山…...

CosyVoice Docker Compose 中 model_id 的高效配置与优化实践

最近在部署 CosyVoice 语音服务时&#xff0c;我发现 docker-compose.yml 文件里的 model_id 配置项&#xff0c;虽然看起来只是简单的一行&#xff0c;但配置得当与否&#xff0c;直接关系到整个服务的部署效率、启动速度和资源开销。如果随便填一个值&#xff0c;或者不理解其…...

一种路径优化和速度优化算法实现(仿照百度Apollo方案),只提供代码,有相关的readme文...

一种路径优化和速度优化算法实现&#xff08;仿照百度Apollo方案&#xff09;&#xff0c;只提供代码&#xff0c;有相关的readme文件。 自动驾驶 &#xff0c;路径优化&#xff0c;速度优化&#xff0c;pnc。 的代码最近在折腾自动驾驶的路径规划模块&#xff0c;发现实际落地…...

智能客服架构图实战:从高并发设计到生产环境部署

今天想和大家聊聊智能客服系统的架构实战。我们团队最近刚把一个老的单体客服系统重构为微服务架构&#xff0c;主要就是为了应对大促期间的高并发访问。整个过程踩了不少坑&#xff0c;也积累了一些经验&#xff0c;在这里做个梳理和分享。 先说说我们遇到的痛点。原来的系统&…...

3个关键步骤掌握BetaFlight黑匣子日志分析:从新手到专家

3个关键步骤掌握BetaFlight黑匣子日志分析&#xff1a;从新手到专家 【免费下载链接】blackbox-log-viewer Interactive log viewer for flight logs recorded with blackbox 项目地址: https://gitcode.com/gh_mirrors/bl/blackbox-log-viewer BetaFlight Blackbox Log…...

nli-distilroberta-base前端集成案例:Vue.js构建智能文本分析界面

nli-distilroberta-base前端集成案例&#xff1a;Vue.js构建智能文本分析界面 1. 场景价值与方案概述 电商平台的客服系统每天需要处理大量用户咨询&#xff0c;其中很多问题都涉及产品参数的对比&#xff08;如"这款手机电池容量比A型号大吗&#xff1f;"&#xf…...

Llama-3.2V-11B-cot部署详解:自动修复视觉权重加载致命Bug全过程

Llama-3.2V-11B-cot部署详解&#xff1a;自动修复视觉权重加载致命Bug全过程 1. 项目概述 Llama-3.2V-11B-cot是基于Meta Llama-3.2V-11B-cot多模态大模型开发的高性能视觉推理工具&#xff0c;专为双卡RTX 4090环境深度优化。本工具通过自动修复视觉权重加载等核心Bug&#…...

Onekey:3分钟搞定Steam游戏清单下载的终极神器

Onekey&#xff1a;3分钟搞定Steam游戏清单下载的终极神器 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 还在为复杂的Steam游戏清单获取流程而烦恼吗&#xff1f;Onekey作为一款专业的Steam D…...

Andi活码,最简单好用!

上链接&#xff1a; https://app.andi.cn/qr/ 试用过这么多群聊二维码的活码工具。 真正好用的是我推荐的这款Andi活码。 免登录、打开即用。单屏管理&#xff0c;超简单好用。 优威科技有限公司出品。 承诺永久免费长期支持。 稳定可靠好用&#xff01; 不信我来用一下…...