前言
什么是redis?
Redis 是一个开源的高性能键值存储系统,通常用作数据库、缓存或消息代理。以下是对 Redis 的详细介绍:
1. 基本特性
- 速度快:Redis 的读写速度非常快,可以达到每秒数万次的读写操作。
- 多种数据结构:支持字符串、列表、集合、有序集合、散列、位图、超日志和地理空间索引等多种数据结构。
- 原子操作:Redis 的所有操作都是原子性的,这意味着它们要么完全执行,要么完全不执行,这有助于保证数据的一致性。
- 丰富的特性:除了基本的键值存储功能外,Redis 还提供了发布/订阅、事务、持久化、复制、Lua 脚本执行等高级功能。
2. 数据结构
- 字符串(String):最基本的数据结构,可以存储字符串和二进制数据。
- 列表(List):一个有序集合,支持在两端添加或移除元素。
- 集合(Set):一个无序集合,自动去除重复元素。
- 有序集合(Sorted Set):与集合类似,但每个元素都有一个分数,可以按照分数排序。
- 散列(Hash):类似于其他语言中的字典或对象,存储键值对。
- 位图(Bitmaps):使用位来存储信息,适合用于表示布尔值的集合。
- 超日志(HyperLogLog):用于基数统计,可以用于去重计数。
- 地理空间(Geospatial):用于存储地理位置信息,并进行地理位置查询。
3. 持久化
- RDB(Redis Database):通过创建内存数据的快照来持久化数据。可以配置定时任务自动保存。
- AOF(Append Only File):记录每次写操作命令,以日志的形式保存,启动时重放这些命令来恢复数据。
4. 复制
- 主从复制:一个主节点可以有多个从节点,从节点可以用于读取操作,以此来分散读负载,并且从节点可以作为主节点的备份。
5. 高可用性
- Sentinel(哨兵):用于监控 Redis 主从服务器,并在主服务器下线时自动进行故障转移。
6. 集群
- Redis Cluster:提供数据分片和高可用性,不需要客户端知道数据存放在哪个节点,Redis Cluster 会自动处理。
7. 安全性
- 认证:可以通过设置密码来保护 Redis 服务器。
- 加密连接:支持使用 SSL/TLS 加密客户端和服务器之间的连接。
8. 应用场景
- 缓存:提高热点数据的读取速度,减少数据库的压力。
- 会话存储:在分布式系统中存储用户会话。
- 消息队列:使用发布/订阅模式实现异步消息传递。
- 排行榜:使用有序集合实现实时更新的排行榜。
- 实时分析:使用 HyperLogLog 进行基数统计,进行实时分析。
9. 配置和优化
- 内存管理:可以通过配置来限制内存使用量,以及设置内存淘汰策略。
- 性能优化:可以通过调整持久化策略、复制策略、网络配置等来优化 Redis 的性能。
Redis 的灵活性和高性能使其成为许多现代应用的理想选择,无论是作为数据库、缓存还是消息传递系统。
实现步骤
1. 引入redis依赖
第一个为redis的起步依赖是必须引入的,第二个是选用的
<!-- redis 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- redis commons-pool2 是用于 Lettuce 连接池配置的依赖-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
2.配置redis
在application.yml
文件,这样配置:
# Redis 配置
spring:
redis:
host: localhost # 指定 Redis 服务器的地址
port: 6379 # 指定 Redis 服务器的端口,默认为 6379
database: 0 # 指定 Redis 数据库的索引,默认为 0
password: # 指定 Redis 连接密码,如果需要的话
timeout: 2000ms # 指定 Redis 连接超时时间,默认为 2000 毫秒
# 连接池配置
lettuce:
pool:
min-idle: 0 # 最小空闲连接数,默认为 0
max-idle: 8 # 最大空闲连接数,默认为 8
max-active: 8 # 连接池中的最大连接数,默认为 8
max-wait: -1ms # 如果在等待可用连接时,超过这个时间还没有可用连接,则抛出异常,默认为 -1(无限制)
3.测试是否成功
在test文件夹下,创建一个RedisTest的测试类。
测试代码:
package com.ccyx.redisdemo;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import java.util.concurrent.TimeUnit;
@SpringBootTest
class RedisTest {
@Autowired
private RedisTemplate redisTemplate;
@Test
void testRedis() {
// 添加缓存键值对name:mijiu并设置过期时间为100秒
redisTemplate.opsForValue().set("name", "mijiu",
100, TimeUnit.SECONDS);
String value = (String) redisTemplate.opsForValue().get("name");
System.out.println(value);
}
}
如果成功可以看到控制台已经打印出刚刚输入进redis中的值:
注意,需要启动redis的服务才可以。
标签:教程,springboot,redis,Redis,默认,import,集合,org From: https://blog.csdn.net/qq_64734490/article/details/143522503