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

上海网站建设的意义浙江省一建建设集团网站首页

上海网站建设的意义,浙江省一建建设集团网站首页,杭州信贷网站制作,电商设计软件文章目录 1. SpringDataRedis 概述2. 快速入门2.1 导入pom坐标2.2 配置文件2.3 测试代码2.4 数据序列化器2.5 StringRedisTemplate2.6 总结 1. SpringDataRedis 概述 SpringData 是Spring 中数据操作的模块#xff0c;包含对各种数据库的集成#xff0c;其中对Redis的集成模… 文章目录 1. SpringDataRedis 概述2. 快速入门2.1 导入pom坐标2.2 配置文件2.3 测试代码2.4 数据序列化器2.5 StringRedisTemplate2.6 总结 1. SpringDataRedis 概述 SpringData 是Spring 中数据操作的模块包含对各种数据库的集成其中对Redis的集成模块就叫做 SpringDataRedis官网地址https://spring.io/projects/spring-data-redis 提供了对不同Redis客户端的整合Lettuce和Jedis提供了RedisTemplate统一API来操作Redis支持Redis的发布订阅模型支持Redis哨兵和Redis集群支持基于Lettuce的响应式编程支持基于JDK.JSON.字符串.Spring对象的数据序列化及反序列化支持基于Redis的JDKCollection实现 SpringDataRedis中提供了RedisTemplate工具类其中封装了各种对Redis的操作。并且将不同数据类型的操作API封装到了不同的类型中 2. 快速入门 SpringBoot 已经提供了对 SpringDataRedis 的支持使用非常简单 2.1 导入pom坐标 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.5.7/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.snow/groupIdartifactIdstudyRedis/artifactIdversion1.0/versionpropertiesjava.version1.8/java.versionmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependencies!--redis依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency!--common-pool--dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactId/dependencydependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.70/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationexcludesexcludegroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/exclude/excludes/configuration/plugin/plugins/build/project2.2 配置文件 spring:redis:host: 192.168.98.98port: 6379password: snowlettuce:pool:max-active: 8 #最大连接max-idle: 8 #最大空闲连接min-idle: 0 #最小空闲连接max-wait: 100ms #连接等待时间2.3 测试代码 SpringBootTest class RedisDemoApplicationTests {Autowiredprivate RedisTemplateString, Object redisTemplate;Testvoid testString() {// 写入一条String数据redisTemplate.opsForValue().set(age, 20);// 获取string数据Object age redisTemplate.opsForValue().get(age );System.out.println(age age );} }2.4 数据序列化器 RedisTemplate 可以接收任意 Object 作为值写入 Redis。 只不过写入前会把Object序列化为字节形式默认是采用JDK序列化得到的结果是这样的 缺点 可读性差内存占用较大 我们可以自定义 RedisTemplate 的序列化方式代码如下 Configuration public class RedisConfig {Beanpublic RedisTemplateString, Object redisTemplate(RedisConnectionFactory connectionFactory){// 创建 RedisTemplate 对象RedisTemplateString, Object template new RedisTemplate();// 设置连接工厂template.setConnectionFactory(connectionFactory);// 创建 Fastjson 序列化工具FastJsonRedisSerializerObject jsonRedisSerializer new FastJsonRedisSerializer(Object.class);// 设置 Key 序列化template.setKeySerializer(RedisSerializer.string());template.setHashKeySerializer(RedisSerializer.string());// 设置 Value 序列化template.setValueSerializer(jsonRedisSerializer);template.setHashValueSerializer(jsonRedisSerializer);// 返回return template;} }这里采用了 JSON 序列化来代替默认的 JDK 序列化方式。最终结果如图 整体可读性有了很大提升并且能将Java对象自动的序列化为JSON字符串并且查询时能自动把JSON反序列化为Java对象。 不过其中记录了序列化时对应的 class 名称目的是为了查询时实现自动反序列化。这会带来额外的内存开销。 2.5 StringRedisTemplate 尽管之前 JSON 的序列化方式可以满足我们的需求但依然存在一些问题如图 为了在反序列化时知道对象的类型JSON序列化器会将类的class类型写入json结果中存入Redis会带来额外的内存开销。 为了减少内存的消耗我们可以采用手动序列化的方式换句话说就是不借助默认的序列化器而是我们自己来控制序列化的动作同时我们只采用String的序列化器这样在存储value时我们就不需要在内存中就不用多存储数据从而节约我们的内存空间 这种用法比较普遍因此 SpringDataRedis 就提供了 RedisTemplate 的子类StringRedisTemplate它的key和value的序列化方式默认就是String方式。 省去了我们自定义RedisTemplate的序列化方式的步骤而是直接使用 SpringBootTest class RedisStringTests {Autowiredprivate StringRedisTemplate stringRedisTemplate;Testvoid testSaveUser() {// 写入一条String数据ValueOperationsString, String opsForValue stringRedisTemplate.opsForValue();Student student new Student(2, swallow, 12);opsForValue.set(swallow, JSON.toJSONString(student));}}此时我们再来看一看存储的数据小伙伴们就会发现那个class数据已经不在了节约了我们的空间(节约了一半呢~~~)~ 当使用了 fastjson 作为序列化方式后也可以使用 redisTemplate Testvoid testString3() {// 写入一条String数据ValueOperations opsForValue redisTemplate.opsForValue();Student student new Student(12, 刘德华, 42);opsForValue.set(liudehua, student);System.out.println(liudehua: opsForValue.get(liudehua));}2.6 总结 RedisTemplate的两种序列化实践方案 方案一 自定义RedisTemplate 修改RedisTemplate的序列化器为GenericJackson2JsonRedisSerializer 会占用额外的内存空间 记录字节码 方案二 使用StringRedisTemplate写入Redis时手动把对象序列化为JSON读取Redis时手动把读取到的JSON反序列化为对象
http://wiki.neutronadmin.com/news/396511/

相关文章:

  • 营销网站的设计与实现项目外包app
  • 昆山网站建设是什么微站和pc网站
  • 手机做网站用什么软件站点建立网站的方法
  • 呼市浩特网站建设用python做网站怎么赚钱
  • 甘孜州住房城乡建设局网站网站开发开发语言
  • 手机网站开发源码浙江交工宏途交通建设有限公司网站6
  • 做网站上传那个目录宛城区网站建设
  • 做网站价格多少wordpress 极简博客
  • 网站模板 阿里济南联通网站备案
  • 服务器网站维护wordpress模板选择
  • 苏州好的做网站的公司北京哪里有专门做网站的地方
  • 浙江省建设监理协会网站网站开发例子
  • 网站框架方案哪个页面设计培训好
  • 网站标题具体怎样优化做蛋糕的英文网站
  • 网站设计板块自建站电商外贸
  • iis6cgi php网站缓存wordpress主题教程 pdf
  • 郑州市建设安全管理协会网站百度识图扫一扫
  • 游戏网站建设策划书单页面销售信网站赚钱系统
  • 唐山玉田网站建设网站 建设 步骤是
  • 网站上添加子栏目上海最正规的人才市场
  • 个人网站设计html贵阳装饰装修公司网站
  • 网站上广告动图是怎么做的杭州最好的电商培训机构
  • 广东省医院建设协会网站首页免费下载设计素材网站
  • 浏览不良网站会被网警抓吗windows优化大师有哪些功能
  • 龙岗区住房和建设局官方网站搭建微信小程序多少钱
  • 装修网站建设高校网站建设策划
  • 手机网站信任从哪里设置杭州公司注册地址可以是住宅吗
  • 北京专业网站建设服务商学校网站建设小组及分工
  • 开通企业网站需要多少钱甘肃省交通建设集团有限公司网站
  • 网站开发属于什么费用网站开发建设须知