当前位置: 首页 > news >正文

网站开发总体设计o2o商超网站建设

网站开发总体设计,o2o商超网站建设,网站地图怎样做,返利网站开发使用SpringBoot集成Redis使用Cache缓存只要配置相应的配置类,然后使用Cache注解就能实现 RedisConfig配置 新建RedisConfig配置类 package com.bdqn.redis.config;import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annota…

使用SpringBoot集成Redis使用Cache缓存只要配置相应的配置类,然后使用Cache注解就能实现

RedisConfig配置

新建RedisConfig配置类

package com.bdqn.redis.config;import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;import java.lang.reflect.Method;
import java.time.Duration;/*** @author cuishujian* @date 2024/9/25*/
@Configuration
@EnableCaching// 开启缓存
public class RedisConfig extends CachingConfigurerSupport {/*** 自定义生成 key的规则* 缓存对象集合中,缓存是以 key-value 形式保存的* 当不指定缓存的 key时,SpringBoot会使用 SimpleKeyGenerator 生成 key* @return*/@Beanpublic KeyGenerator keyGenerator(){return new KeyGenerator(){public Object generate(Object target, Method method, Object... params){// 格式化缓存key字符串StringBuilder sb = new StringBuilder();// 追加类名sb.append(target.getClass().getName());// 追加方法名sb.append(method.getName());// 遍历参数并且追加for (Object obj : params) {sb.append(obj.toString());}return sb.toString();}};}@Beanpublic RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(redisConnectionFactory);// 解决查询缓存转换异常的问题ObjectMapper om = new ObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);// 使用Jackson2JsonRedisSerialize 替换默认序列化Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(om, Object.class);// 设置value的序列化对象和key的序列化对象redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.afterPropertiesSet();return redisTemplate;}/*** 采用RedisCacheManager作为缓存管理器*/@Beanpublic CacheManager cacheManager(RedisConnectionFactory factory){// 创建Redis序列化对象RedisSerializer<String> redisSerializer = new StringRedisSerializer();// 解决查询缓存转换异常的问题ObjectMapper om = new ObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);// 创建Jackson的序列化对象Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(om, Object.class);// 配置序列化(解决乱码问题)RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()// 7天缓存过期.entryTtl(Duration.ofDays(7)).serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer)).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)).disableCachingNullValues();RedisCacheManager cacheManager = RedisCacheManager.builder(factory).cacheDefaults(config).build();return cacheManager;}
}

以上代码说明如下:

  1. @EnableCaching:使用此注解开启缓存
  2. keyGenerator():使用此方法自定义key生成规则
  3. redisTemplate():使用此方法改变默认的序列化规则,将数据序列化为json格式。当我们引入了spring-boot-starter-data-reids时,RedisAutoConfiguration自动配置类帮我们注入了RedisTemplate<Object,Object>和StringRedisTemplate两个组件来操作redis,其中RedisTemplate<Object,Object>的键值都是对象,StringRedisTemplate用来操作字符串的。RedisTemplate使用的是JdkSerializationRedisSerializer,存入数据会将数据先序列化成字节数据然后再存入Redis,如果希望将数据序列化为json格式,则要改变默认的序列化规则
  4. cacheManager():使用此方法自定义RedisCacheManager改变默认的序列化规则,将数据序列化为json格式

Cache注解

@Cacheable

  • 作用:主要针对方法配置,能够根据方法的请求参数对其结果进行缓存。在查询时,会先从缓存中取数据,若不存在才再发起对数据库的访问。
  • 参数:
    • value/cacheNames:指定缓存存储的集合名。
    • key:缓存对象存储在Map集合中的key值,非必需,缺省按照函数的所有参数组合作为key值,若自己配置需使用SpEL表达式。
    • condition:缓存对象的条件,非必需,也需使用SpEL表达式,只有满足表达式条件的内容才会被缓存。
    • unless:另一个缓存条件参数,非必需,也需使用SpEL表达式,但判断时机在函数被调用之后,所以它可以通过对result进行判断。
    • keyGenerator:用于指定key生成器,非必需。
    • cacheManager:用于指定使用哪个缓存管理器,非必需。
    • cacheResolver:用于指定使用哪个缓存解析器,非必需。
  • 示例:@Cacheable(value = "user", key = "#id"),表示使用id作为key,将方法的返回结果缓存到名为“user”的缓存中。

@CachePut

  • 作用:主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,并且每次都会触发真实方法的调用(与@Cacheable不同)。主要用于数据新增和修改操作上。
  • 参数:与@Cacheable类似。
  • 示例:@CachePut(value = "user", key = "#user.id"),表示以user.id作为key,将方法的返回结果更新到名为“user”的缓存中。

@CacheEvict

  • 作用:主要针对方法配置,能够根据一定的条件对缓存进行清空。通常用在删除方法上。
  • 参数:
    • value/cacheNames:指定缓存存储的集合名。
    • key:指定清除数据的key值。
    • allEntries:非必需,默认为false。若设置为true,则清除缓存组件下的所有数据。
    • beforeInvocation:非必需,默认为false。若设置为true,则在方法执行前清除缓存,否则在方法执行后清除。
  • 示例:@CacheEvict(value = "user", key = "#id"),表示从名为“user”的缓存中移除key为id的数
http://www.yayakq.cn/news/425805/

相关文章:

  • 阜阳网站制作公司找哪家3 6年级手工小制作
  • 一起做网店的网站连锁店装修
  • 重庆地产网站建设怎么做课题组网站
  • 建设网站作业网站建设作用 名词解释
  • 黄页88网免费发布信息seo关键词有哪些类型
  • 水处理网站模板销售网站的优秀标准
  • 中小企业网站建设服务公司推广策略研究
  • 建购物网站难吗济南工程建设验收公示网
  • 网站建设规划方书模板深圳正规网站建设公司
  • 网站建设翻译wordpress取分类名称
  • 诚信通网站怎么做外链dux大前端WordPress
  • 全网最低价查询网站网页程序开发语言
  • 诸城企业网站建设10元网站备案
  • 受欢迎的广州网站设计哪个浏览器可以看禁止访问的网站
  • 网站设计与网站建设书店搜集10个优秀网站
  • 哪个网站上做ppt比较好网站建设要多少钱怎样
  • 网站技术策划人员要求商城分销系统
  • 做app简单还是网站南京网站建设 奥美通全网营销
  • 威海 网站建设系统清理优化工具
  • 钓鱼网站排名假冒建设银行最多wordpress自动网站地址
  • 网站优化qq群前端开发培训学校
  • 网站开发模合同php网站源码怎么在本地电脑调式
  • 网站开发出来为什么加载特别慢驻马店网站网站建设
  • 织梦网站关闭手机版公司支付网站款做凭证
  • 群晖nas可以做网站吗手机体验网站
  • 外国购物网站有哪些平台怎样向网站上传照片
  • 自己做免费网站进入百度app查看
  • 德州市建设工程质监站网站网页布局设计框架图表
  • 外贸推广用中文网站外贸公司网站多少钱
  • 泉州网站建设价格wordpress电影下载站