SpringBoot整合redis缓存

一、redis概述,什么是redis

       1.Redis是一个开源的内存数据存储系统、也是c语言编写的非关系型数据库,以键值对的形式储存数据,可以用作数据库、缓存、消息中间件等,具有高性能、可扩展性和灵活性等特点。Redis支持多种数据类型,如String、Hash、List、Set、ZSet集合等,能够满足不同场景的数据存储需求。 Redis的数据存储在内存中,因此访问速度非常快,且可以配置成持久化存储到磁盘中(RDB和AOF),以便数据不丢失。Redis还支持主从复制、分布式、事务等功能,使其成为互联网企业常用的数据存储方案之一。

二、怎么使用redis

     1.可以从redis官网上下载相应的安装包

     2.安装包下载完成将文件解压到一个文件夹里面里面有redis-cli.exe和redis-server.exe

     3.redis-server.exe是redis服务端的可执行文件,在Windows系统下使用。redis-server.exe用于启动redis服务器实例,提供redis服务,以满足应用程序对Redis的访问需求,在文件夹上面输入cmd进入终端,输入指令redis-server.exe redis.windows.conf启动redis,默认端口号为6379

     4.redis-cli.exe是redis命令行界面的可执行文件,在Windows系统下使用。redis-cli.exe能够让用户通过命令行方式与redis服务器进行交互,执行各种redis命令,包括增删改查等操作。

三、SpringBoot整合redis

1.导入SpringBoot自带的redis依赖



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

2.配置yml

  redis:
    database: 0
    host: 127.0.0.1
    port: 6379
    password: 123456
    jedis:
      pool:
        max-wait: 2000ms
        max-active: 8

3.SpringBoot给我们提供了redis的基本API-RedisTemplate,通过RedisTemplate可以方便地操作redis服务器中的数据,Spring redis支持的存储类型和对应的操作方法如下:

@Autowired
private RedisTemplate redisTemplate;
@Test
public void saveDataTest() throws Exception {
// 创建数据对象
Map dataMap = new HashMap<>();
dataMap.put("value", "yy");
dataMap.put("time", LocalDateTime.now().format((DateTimeFormatter.ofPattern ("yyyy-MM-dd"))));
// 存储数据
redisTemplate.opsForValue().set("yy", dataMap);
}

1. 字符串(String)

   - 存储:redisTemplate.opsForValue().set(key, value)
   - 获取:redisTemplate.opsForValue().get(key)
   - 其他操作:如设置过期时间、自增等,可参考RedisTemplate中opsForValue()方法的其他操作。

2. 哈希(Hash)

   - 存储:redisTemplate.opsForHash().put(hash, field, value)
   - 获取:redisTemplate.opsForHash().get(hash, field)
   - 其他操作:如获取所有键值对、删除键值对等,可参考RedisTemplate中opsForHash()方法的其他操作。

3. 列表(List)

   - 存储:redisTemplate.opsForList().rightPush(listKey, value)/leftPush(listKey, value)
   - 获取:redisTemplate.opsForList().range(listKey, start, end)
   - 其他操作:如删除指定元素、根据下标获取元素、获取列表长度等,可参考RedisTemplate中opsForList()方法的其他操作。

4. 集合(Set)

   - 存储:redisTemplate.opsForSet().add(setKey, value)
   - 获取:redisTemplate.opsForSet().members(setKey)
   - 其他操作:如集合求交集、并集、差集等,可参考RedisTemplate中opsForSet()方法的其他操作。

5. 有序集合(Sorted Set)

   - 存储:redisTemplate.opsForZSet().add(zsetKey, value, score)
   - 获取:redisTemplate.opsForZSet().range(zsetKey, start, end)
   - 其他操作:如根据分数范围获取元素、获取有序集合长度等,可参考RedisTemplate中opsForZSet()方法的其他操作。

以上仅列举了一部分常用的操作方法,RedisTemplate还支持其他数据类型的操作(如地理位置类型GeospatialOps),具体可参考RedisTemplate API文档。

4.SpringBoot框架为我们提供了一个技术SpringCache

      Spring Cache是Spring框架提供的一套缓存解决方案,它提供了一些注解,用于在方法上声明缓存策略,以下是常用的注解:

     1. @Cacheable:声明方法需要被缓存,并指定缓存名称(value)、缓存key(key)和缓存条件(condition)。
   
     2. @CachePut:声明方法需要被缓存,但是每次方法执行后都会缓存结果,适合用于更新缓存数据的场景。

     3. @CacheEvict:表示从缓存中删除一个或多个项。可以使用该注解在方法执行前清除缓存(beforeInvocation = true)、方法执行后清除缓存(beforeInvocation = false)或者根据特定条件来清除缓存。

     4. @Caching:允许在方法上方声明多个Spring Cache注解(如@CacheEvict和@CachePut),以修饰方法的缓存行为。

     5. @CacheConfig:该注解可以在类或方法级别上声明缓存的一些公共设置,如公共的缓存名称和缓存管理器等。

     6. @EnableCaching:在Spring应用程序上下文中启用缓存管理器。

     以上注解是Spring Cache中比较常用的一些注解,通过使用这些注解,我们可以方便地进行缓存相关的操作。

你可能感兴趣的:(redis,缓存,spring,boot,java,数据库)