StringRedisTemplate使用
文章来源:若枫 时间:2025-03-11
edis是1个key-value保存体系。战Memcached近似,它救援保存的value典型绝对更多,包含string(字符串)、list(链表)、set(集中)、zset(sorted set --有序集中)战hash(哈希规范)。那些数据典范皆撑持push/pop、add/remove及与交加并散战好散及更充分的掌握,并且那些掌握皆是本子性的。正在此底子上,redis援助种种没有共体例的排序。取memcached一致,为了保障服从,数据皆是慢生计内乱存中。差别的是redis会周期性的把革新的数据写进磁盘大概把修正操纵写进逃添的记载文献,而且正在此底子上竣工了master-slave(主从)共步。
Redis 是1个下本能的key-value数据库。 redis的呈现,很年夜水平赔偿了memcached那类key/value保存的缺乏,正在部 分景象能够对于联系数据库起到很美的弥补感化。它供给了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,应用很简易。
前方道了,为领会绝治码题目,尔们设立了序列化的对象,然则示例中只是是掌握字符串,假设是设立对于象,会是怎样呢?
为了应用便利,尔们引进lombok包
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version></dependency>编写1个Bean
packagecom.example.springboot.model;importlombok.AllArgsConstructor;importlombok.Builder;importlombok.Data;importlombok.NoArgsConstructor;importjava.util.Date;@Data@Builder@NoArgsConstructor@AllArgsConstructorpublicclassBlog{privateintid;privateStringname;privatebooleanisDel;privateDatebirthday;}RedisTemplate的设置类以下
packagecom.example.springboot.config;importcom.fasterxml.jackson.annotation.JsonAutoDetect;importcom.fasterxml.jackson.annotation.PropertyAccessor;importcom.fasterxml.jackson.databind.ObjectMapper;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.data.redis.connection.RedisConnectionFactory;importorg.springframework.data.redis.core.RedisTemplate;importorg.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;importorg.springframework.data.redis.serializer.StringRedisSerializer;@ConfigurationpublicclassRedisConfig{@BeanpublicRedisTemplateredisTemplate(RedisConnectionFactoryredisConnectionFactory){RedisTemplateredisTemplate=newRedisTemplate();redisTemplate.setConnectionFactory(redisConnectionFactory);Jackson2JsonRedisSerializerjackson2JsonRedisSerializer=newJackson2JsonRedisSerializer(Object.class);ObjectMapperobjectMapper=newObjectMapper();objectMapper.setVisibility(PropertyAccessor.ALL,JsonAutoDetect.Visibility.ANY);objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(objectMapper);//中心正在那4止代码redisTemplate.setKeySerializer(newStringRedisSerializer());redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);redisTemplate.setHashKeySerializer(newStringRedisSerializer());redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);redisTemplate.afterPropertiesSet();returnredisTemplate;}}尝试类以下
packagecom.example.springboot;importcom.example.springboot.model.Blog;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;importorg.springframework.data.redis.core.RedisTemplate;importorg.springframework.data.redis.core.StringRedisTemplate;importjava.util.Date;@SpringBootTestpublicclassRedisTest{@AutowiredprivateRedisTemplateredisTemplate;@TestpublicvoidstrTest(){redisTemplate.opsForValue().set("name:10001","Java小强");System.out.println(redisTemplate.opsForValue().get("name:10001"));}@TestpublicvoidobjTest(){Blogblog=Blog.builder().id(1).name("Java小强").isDel(false).birthday(newDate()).build();redisTemplate.opsForValue().set("blog:10001",blog);System.out.println((Blog)redisTemplate.opsForValue().get("blog:10001"));}}由于尔们是晓得保存的数值便是Blog那个类,因此尔们强迫转便能够,而后尔们经由过程RDM瞅停数据
能够瞧到,除尔们的本初数据,数据带领了值典型的少许符号。这类用法使得尔们应用时变得省事,例如下面尔们能够曲交强迫典型蜕变获得念要的对于象。
然则对付保存来讲,那皆是冗尾数据,正在海量数据时,那会是1个宽沉的题目。
尔们能够把对于象脚动转为JSON,而后把JSON脚动转为对于象,如许尔们操纵的键值皆是字符串便可,那里便应用到Spring供给的别的1个对象类StringRedisTemplate。
起首尔们解说失落本去的RedisConfig设备类。
而后从头编写保存战读代替码
packagecom.example.springboot;importcom.example.springboot.model.Blog;importcom.fasterxml.jackson.core.JsonProcessingException;importcom.fasterxml.jackson.databind.ObjectMapper;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;importorg.springframework.data.redis.core.StringRedisTemplate;importjava.util.Date;@SpringBootTestpublicclassRedisTest{@AutowiredprivateStringRedisTemplatestringRedisTemplate;privatestaticfinalObjectMapperobjectMapper=newObjectMapper();@TestpublicvoidstrTest(){stringRedisTemplate.opsForValue().set("name:10002","Java小强");System.out.println(stringRedisTemplate.opsForValue().get("name:10002"));}@TestpublicvoidobjTest()throwsJsonProcessingException{Blogblog=Blog.builder().id(1).name("Java小强").isDel(false).birthday(newDate()).build();stringRedisTemplate.opsForValue().set("blog:10002",objectMapper.writeValueAsString(blog));StringblogJson=stringRedisTemplate.opsForValue().get("blog:10002");System.out.println(blogJson);blog=objectMapper.readValue(blogJson,Blog.class);System.out.println(blog.getBirthday().toLocaleString());}}而后经由过程DRM观停数据,便变得十分简约了
那里须要道停的是,尔们编程,只可凭据实质环境采纳1个绝对适中的规划,不十足完备的意图。
要末是保存上,要末CPU抗,但非论怎样正在1个名目中,皆要指定1个团结的标准。
EDN
推举您浏览更多相关于“ 治码redisspringbootRedisTemplate序列化 ”的作品
文章推荐
Copyright © 2024-2025 燿动吧 – 知识分享,快乐你我,燿动青春 http://www.yaodong8.com All Rights Reserved 网站地图