中国建设银行网站类型北京网页设计师工资有多少
web/
2025/9/25 17:33:51/
文章来源:
中国建设银行网站类型,北京网页设计师工资有多少,中国电信网站备案流程,论文中引用网站中1、java操作Redis库的比较
Redis有各种语言的客户端可以来操作redis数据库#xff0c;其中java语言主要有Jedis与lettuce #xff0c;Spring Data Redis封装了上边两个客户端#xff0c;优缺点如下#xff1a; 2、使用Jedis操作Redis
Jedis使用的基本步骤#xff1a;
引…1、java操作Redis库的比较
Redis有各种语言的客户端可以来操作redis数据库其中java语言主要有Jedis与lettuce Spring Data Redis封装了上边两个客户端优缺点如下 2、使用Jedis操作Redis
Jedis使用的基本步骤
引入依赖创建Jedis对象建立连接使用Jedis方法名与Redis命令一致释放资源 public class RedisTest {Jedis jedis;BeforeEachpublic void setUp(){//建立连接设置密码选择数据库jedis new Jedis(127.0.0.1,6379);// jedis.auth(123456);jedis.select(0);}Testpublic void testJedis(){String result jedis.set(city, 北京);System.out.println(result);String city jedis.get(city);System.out.println(city);String name jedis.hget(user, name);System.out.println(name);}AfterEachpublic void tearDown(){//释放资源if(jedis!null){jedis.close();}}
} 因为Jedis是线程不安全的频繁创建销毁链接也有性能损耗所以可以用Jedis连接池来获取Jedis链接
public class JedisConnectionFactory {private static final JedisPool jedisPool;static{JedisPoolConfig jedisPoolConfig new JedisPoolConfig();jedisPoolConfig.setMaxIdle(8);jedisPoolConfig.setMaxTotal(8);jedisPoolConfig.setMinIdle(0);jedisPoolConfig.setMaxWaitMillis(2000);jedisPool new JedisPool(jedisPoolConfig,127.0.0.1,6379,100,);}public static Jedis getJedis(){return jedisPool.getResource();}
}
3、使用SpringDataRedis操作redis数据库
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的使用步骤
引入spring-boot-starter-data-redis依赖在application.yml配置Redis信息注入RedisTemplate
!-- redis依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency
!-- 连接池--dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactId/dependency
RedisTemplate可以接收任意Object作为值写入Redis只不过写入前会把Object序列化为字节形式默认是采用JDK序列化得到的结果是这样的: 自定义RedisTemplate的序列化方式
Configuration
public class SpringDataRedisConfig {Beanpublic RedisTemplateString, Object redisTemplate(RedisConnectionFactory redisConnectionFactory){RedisTemplateString, Object redisTemplate new RedisTemplate();redisTemplate.setConnectionFactory(redisConnectionFactory);GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer new GenericJackson2JsonRedisSerializer();redisTemplate.setKeySerializer(RedisSerializer.string());redisTemplate.setHashKeySerializer(RedisSerializer.string());redisTemplate.setValueSerializer(genericJackson2JsonRedisSerializer);redisTemplate.setHashValueSerializer(genericJackson2JsonRedisSerializer);return redisTemplate;}
} SpringBootTest
public class SpringDataRedisTest {Autowiredprivate RedisTemplate redisTemplate;Testvoid testRedisTemplate(){redisTemplate.opsForValue().set(redis,6.0.9);Object redis redisTemplate.opsForValue().get(redis);System.out.println(redis);User u new User();u.setName(张三);u.setAge(20);redisTemplate.opsForValue().set(com:user,u);Object o redisTemplate.opsForValue().get(com:user);System.out.println(o);}
}
返回的是Object 为了节省内存空间我们并不会使用JSON序列化器来处理value而是统一使用String序列化器要求只能存储String类型的key和value。当需要存储Java对象时手动完成对象的序列化和反序列化。
Spring默认提供了一个StringRedisTemplate类它的key和value的序列化方式默认就是String方式
SpringBootTest
public class SpringDataRedisTest {Autowired// private RedisTemplate redisTemplate;private StringRedisTemplate redisTemplate;private ObjectMapper objectMapper new ObjectMapper();Testvoid testRedisTemplate() throws JsonProcessingException {redisTemplate.opsForValue().set(redis,6.0.9);Object redis redisTemplate.opsForValue().get(redis);System.out.println(redis);User u new User();u.setName(张三);u.setAge(20);//序列化String s objectMapper.writeValueAsString(u);redisTemplate.opsForValue().set(com:user,s);String o redisTemplate.opsForValue().get(com:user);System.out.println(o);//反序列化User user objectMapper.readValue(o, User.class);}
}
RedisTemplate的两种序列化实践方案 方案一
自定义RedisTemplate修改RedisTemplate的序列化器为GenericJackson2JsonRedisSerializer
方案二 使用StringRedisTemplate
写入Redis时手动把对象序列化为JSON读取Redis时手动把读取到的JSON反序列化为对象
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81739.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!