网站自动识别移动终端wordpress now 1.5
Redis
一、为什么要用缓存?
缓存定义
缓存是一个高速数据交换的存储器,使用它可以快速的访问和操作数据。
程序中的缓存
在我们程序中,如果没有使用缓存,程序的调用流程是直接访问数据库的;
如果多个程序调用一个数据库,那么调用流程就如下图:
所以不同程序调用一个数据库,会给数据库的压力增大,这个时候缓存的作用就体现出来了;
建立一个缓存系统,缓解数据库压力。
缓存的优点
缓存是
key-value类型,存储结构简单,所以查询效率比较快缓存是存储在内存中的,而一般的数据库是将数据存储在磁盘。
内存操作>磁盘操作速度,因此缓存的操作和读取比较快
缓存可扩展性比较强,因此它的负载能力、更改、查询效率更快。
二、缓存分类
缓存大致分为两类:
- 本地缓存
 - 分布式缓存
 本地缓存也叫单机缓存,就是说可以应用在单机环境下的缓存。所谓的单机环境是指将服务部署在一台服务器上。
本地缓存只适用于当前系统。
分布式缓存是指可以应用在分布式系统中的缓存。所谓的分布式系统就是指一套服务部署到多台服务器,并且通过负载分发将用户的请求按照一定的规则分发到不同服务器。
三、常见缓存使用
本地缓存的常见使用:
Spring Cache,MyBatis的缓存分布式缓存的常见使用:
Redis和Memcached
本地缓存:Spring Cache
在
SpringBoot项目中,可以直接使用Spring内置的Cache【本地缓存】,只需要三个步骤:
- 开启缓存
 - 操作缓存
 - 调用缓存
 
【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方法

有了缓存之后,我们第二次访问该方法
 
控制台就不会进行信息的打印了。

分布式缓存

Redis 和 Memcached 有什么区别?
 
- 存储方式不同: 
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 端口放开 :

打开可视化工具, 新建一个连接.
- Host 填自己云服务器的外网IP.
 - Port 填写 6379.
 
当连接建立成功之后, 我们在 redis 默认的数据库中可以看到刚才创建的键值对

当然也就可以在可视化界面操作 Redis 了.
Redis数据类型
【1】字符串类型
【2】字典类型
【3】列表类型
【4】集合类型
【5】有序集合类型
持续更新中~~~



