非关系型数据库-Redis
创始人
2025-01-09 14:07:45
0

Redis

     Redis是一个开源的内存数据库系统,其主要用途是作为高速缓存、消息队列和键值存储系统。Redis具有丰富的数据结构和功能,可以支持字符串、哈希、列表、集合和有序集合等数据类型。它以其快速、可扩展和高可用性而闻名,并且具有对事务、发布/订阅和持久化等特性的支持。Redis也被广泛应用于Web应用程序、实时分析、消息传递和数据缓存等领域。

Spring的支持 

步骤1:添加依赖 在你的Spring项目的pom.xml文件中添加Redis依赖。

     org.springframework.boot     spring-boot-starter-data-redis  

步骤2:配置Redis连接信息 在你的Spring项目的application.properties(或application.yml)文件中配置Redis连接信息。

application.properties:

spring.redis.host=your.redis.host spring.redis.port=your.redis.port spring.redis.password=your.redis.password 

application.yml:

spring:   redis:     host: your.redis.host     port: your.redis.port     password: your.redis.password 

步骤3:创建Redis配置类 创建一个Redis配置类来设置Redis连接工厂。

import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisPassword; import org.springframework.data.redis.connection.RedisStandaloneConfiguration; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer;  @Configuration public class RedisConfig {      @Value("${spring.redis.host}")     private String redisHost;      @Value("${spring.redis.port}")     private int redisPort;      @Value("${spring.redis.password}")     private String redisPassword;      @Bean     public LettuceConnectionFactory redisConnectionFactory() {         RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(redisHost, redisPort);         config.setPassword(RedisPassword.of(redisPassword));         return new LettuceConnectionFactory(config);     }      @Bean     public RedisTemplate redisTemplate() {         RedisTemplate template = new RedisTemplate<>();         template.setConnectionFactory(redisConnectionFactory());          template.setKeySerializer(new StringRedisSerializer());         template.setValueSerializer(new GenericJackson2JsonRedisSerializer());          return template;     } } 

步骤4:使用RedisTemplate进行操作 现在,你可以使用RedisTemplate对Redis进行操作了。

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service;  @Service public class RedisService {      @Autowired     private RedisTemplate redisTemplate;      public void setValue(String key, Object value) {         redisTemplate.opsForValue().set(key, value);     }      public Object getValue(String key) {         return redisTemplate.opsForValue().get(key);     }      public boolean exists(String key) {         return redisTemplate.hasKey(key);     }      public void delete(String key) {         redisTemplate.delete(key);     }          // 其他Redis操作 } 

使用

    

1.opsForValue()是RedisTemplate类中的方法之一,用于操作字符串类型的数据。它提供了一系列对字符串进行操作的方法,比如设置值、获取值、修改值、删除值等等。

例子:

 redisTemplate.opsForValue().set("key", "value"); //设置键为"key",值为"value"的键值对 String value = redisTemplate.opsForValue().get("key"); //获取键为"key"的值,并赋给变量value

2.opsForList()是RedisTemplate类中的方法之一,用于操作列表类型的数据。它提供了一系列对列表进行操作的方法,比如添加元素、获取范围内的元素、删除元素等等。

例子:

redisTemplate.opsForList().leftPush("list", "value1"); //在名为"list"的列表的左侧添加元素"value1" List values = redisTemplate.opsForList().range("list", 0, -1); //获取名为"list"的列表中所有元素

3.opsForSet()是RedisTemplate类中的方法之一,用于操作集合类型的数据。它提供了一系列对集合进行操作的方法,比如添加元素、获取所有元素、删除元素等等。

例子:

redisTemplate.opsForSet().add("set", "value1", "value2"); //向名为"set"的集合中添加元素"value1"和"value2"

Set values = redisTemplate.opsForSet().members("set"); //获取名为"set"的集合中所有元素

4.opsForZSet()是RedisTemplate类中的方法之一,用于操作有序集合类型的数据。它提供了一系列对有序集合进行操作的方法,比如添加元素、获取排名范围内的元素等等。

例子:

redisTemplate.opsForZSet().add("zset", "value1", 1.0); //向名为"zset"的有序集合中添加元素"value1",并设定它的分值为1.0 Set values = redisTemplate.opsForZSet().range("zset", 0, -1); //获取名为"zset"的有序集合中所有元素

5.opsForHash()是RedisTemplate类中的方法之一,用于操作哈希类型的数据。它提供了一系列对哈希进行操作的方法,比如添加字段和值、获取字段的值等等。

例子:

redisTemplate.opsForHash().put("hash", "field1", "value1"); //在名为"hash"的哈希中添加字段"field1"和对应的值"value1"

String value = (String) redisTemplate.opsForHash().get("hash", "field1"); //获取名为"hash"的哈希中字段"field1"的值

Spring Boot的支持

 

步骤1:添加Redis依赖项 在你的Spring Boot项目的pom.xml文件中添加以下依赖项:

     ...              org.springframework.boot         spring-boot-starter-data-redis          ...  

步骤2:配置Redis连接 在你的application.properties或application.yml文件中添加以下配置:

application.properties

spring.redis.host=your_redis_host spring.redis.port=your_redis_port spring.redis.password=your_redis_password 

application.yml

spring:   redis:     host: your_redis_host     port: your_redis_port     password: your_redis_password 

步骤3:创建Redis配置类 创建一个Redis配置类来配置连接工厂和Redis模板。在这个类中,你可以自定义Redis连接池、序列化器等配置。

import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer;  @Configuration public class RedisConfig {      @Bean     public RedisConnectionFactory redisConnectionFactory() {         return new LettuceConnectionFactory();     }      @Bean     public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {         RedisTemplate template = new RedisTemplate<>();         template.setConnectionFactory(redisConnectionFactory);         template.setKeySerializer(new StringRedisSerializer());         template.setValueSerializer(new GenericJackson2JsonRedisSerializer());         return template;     } } 

步骤4:使用RedisTemplate操作Redis 现在,你可以在任何Spring Bean中注入RedisTemplate来操作Redis数据库。

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service;  @Service public class ExampleService {      @Autowired     private RedisTemplate redisTemplate;      public void setKey(String key, Object value) {         redisTemplate.opsForValue().set(key, value);     }      public Object getValue(String key) {         return redisTemplate.opsForValue().get(key);     } } 

总结

  1. 数据结构:Redis支持多种数据结构,包括字符串(string)、哈希表(hash)、列表(list)、集合(set)、有序集合(sorted set)等。这些数据结构可以在内存中高效地存储和操作数据。

  2. 内存存储:Redis将数据存储在内存中,这使得它能够快速地读取和写入数据。同时,Redis还支持将数据持久化到磁盘,以便在重启后能够恢复数据。

  3. 单线程:Redis是单线程的,这意味着它在任何时刻只会执行一个操作。这种设计减少了线程切换的开销,并提高了系统的性能。此外,Redis还通过使用异步IO和多路复用技术来提高并发性能。

  4. 高并发:Redis支持高并发访问,可以同时处理大量的请求。它采用了多种优化策略,如使用连接池、异步IO和多路复用等技术,以提高系统的并发能力。

  5. 发布订阅:Redis支持发布订阅模式,可以实现消息的发布和订阅。当有新的消息发布时,所有订阅者将会收到消息,这使得Redis非常适合构建实时应用。

  6. 事务:Redis支持事务操作,可以将一系列的操作作为一个原子操作进行执行。事务操作可以保证操作的一致性,同时还支持回滚操作。

  7. 丰富的功能:除了基本的数据结构操作,Redis还提供了丰富的功能,如排序、分页、过期策略、持久化、集群等。这些功能使得Redis非常灵活和易于使用。

      

相关内容

热门资讯

AI智能体研发之路-模型篇(一... 博客导读:《AI—工程篇》AI智能体研发之路-工程篇(一)...
【DevOps】运维过程中经常... 一、解决HTTP 408错误:上传3M文件时请求超时的问题在开发Web应用程序时&#x...
基于ensp校园网络(完整文档... 大家好,我是小华学长,一名计算机领域的博主。经过多年的学习和实践...
黑科技攻略《Wepoke科技》... 黑科技攻略《Wepoke科技》软件透明挂!(透明挂)软件模拟器(2021已更新)(哔哩哔哩)是一款可...
科普常识!(wpk代打)透视辅... 大家肯定在之前wpk或者wpk中玩过科普常识!(wpk代打)透视辅助!(透视)外挂辅助模拟器(202...
新版2024教程《WPk辅助透... 您好,这款游戏可以开挂的,确实是有挂的,需要了解加微【439369440】很多玩家在这款游戏中打牌都...
Win11安装Ubuntu20... Win11安装Ubuntu20.04双系统(保姆教程 - 更新至2024.02...
深入浅出之Docker Com... 目录1.Docker Compose概述1.1 Docker Compose 定义1.2 Docke...
安全运维:cmd命令大全(非常... 1、calc:启动计算器2、appwiz.cpl:程序和功能3、cert...
web应用程序配置服务端口,采... 目录一、问题描述1、背景2、问题详细描述二、问题分析1、错误的多个可能因素2、原因分析三、问题解决1...