# redis的使用实战篇 **Repository Path**: limfff/the-use-of-redis ## Basic Information - **Project Name**: redis的使用实战篇 - **Description**: redis的使用实战篇 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2020-09-17 - **Last Updated**: 2024-07-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Redis的实用实战篇 ## 1、导入依赖 ```pom org.springframework.boot spring-boot-starter-data-redis io.lettuce lettuce-core redis.clients jedis ``` ## 2、在yml或者properties 配置文件配置redis主机地址: ~~~properties spring.redis.host:xxx.xxx.xxxx spring.reids.port:6379 根据自己实际情况来设置 ~~~ ## 3、根据情况自己自定义设置redis配置文件属性 ~~~ spring.cache.type=redis 设置使用redis spring.cache.redis.time-to-live=3600000 定时删除 spring.cache.redis.use-key-prefix=true #缓存数据key是否使用前缀,默认是true spring.cache.redis.cache-null-values=true #是否缓存null数据,默认是false,可以用来解决缓存穿透 ~~~ 注意,上面的配置是由于是自己接管配置,不适用autoconfigrution所以,我们需要自己写一个配置类。如果你不手动接管,使用redis帮配好的配置,就不用写配置类。 如果不自己写配置类的话,自动配置类是使用java序列化机制。到redis看到的会是一堆java序列化符号,不是json格式。json格式的有点就是跨平台,所有语言都能够识别, 以后如果是多语言项目,都可以通过解析json格式的数据,来分析数据,获取到想要的信息。所以建议大家还是自己配置一下 配置类,下面是我的配置类,仅供参考。 ~~~java package com.atguigu.gulimall.product.config; import org.springframework.boot.autoconfigure.cache.CacheProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration @EnableCaching @EnableConfigurationProperties(CacheProperties.class) public class MyCacheConfig { // @Autowired // CacheProperties cacheProperties; @Bean public RedisCacheConfiguration redisCacheConfiguration(CacheProperties cacheProperties) { RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig(); config = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())); config = config.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())); CacheProperties.Redis redis = cacheProperties.getRedis(); if (redis.getTimeToLive() != null) { config = config.entryTtl(redis.getTimeToLive()); } if (redis.getKeyPrefix() != null) { config = config.prefixKeysWith(redis.getKeyPrefix()); } if (!redis.isCacheNullValues()) { config = config.disableCachingNullValues(); } if (!redis.isUseKeyPrefix()) { config = config.disableKeyPrefix(); } return config; } } ~~~ ## 4、在主入口开启缓存或者相关配置类中开启 ~~~ @EnableCaching ~~~ 然后就可以在类或者方法上使用 ~~~ @Cacheable( value = {"queryPage"}, key = "#root.method.name") // ~~~ 然后就可以测试 controller 了~~~ 然后再去redis 可视化工具看看数据~