redis和jedis有什么区别
redis与spring的集成一般分为spring-data-redis集成和jedis集成。我们先来看看两者的区别
1.引用依赖不同:
spring-data-redis使用的依赖如下:
org.springframework.data spring -data-redis 1.8.9.RELEASE
jedis使用的依赖有如下:
redis.clients jedis 2.9.0版本> <类型>jar类型> <范围>编译范围>依赖项> 2。如何管理jedis实例和操作redis服务的区别:
spring-data-redis:
通过org.springframework.data.redis.connection.jedis.JedisConnectionFactory进行管理,即就是通过工厂类管理,然后通过配置的模板bean来操作redis服务。代码段中充斥着大量与业务无关的模板片段代码。代码冗余且难以维护。例如,如下代码:
protected RedisTemplateredisTemplate; public void saveUser(User user) { redisTemplate.execute(new RedisCallback RedisTemplate简介
Spring封装了RedisTemplate对象来执行各种操作在redis上,它支持所有redis原生API。 RedisTemplate提供了几种常用的接口方法的使用,分别是:
private ValueOperations
valueOps;私有 ListOperations listOps; private SetOperations setOps ;private ZSetOperations zSetOps; RedisTemplate 定义了 5 种数据结构操作
redisTemplate .opsForValue() ;//操作字符串 redisTemplate.opsForHash();//操作 hashredisTemplate.opsForList();//操作 listredisTemplate.opsForSet();//操作 setredisTemplate.opsForZSet();//操作有序 setStringRedisTemplate 和 RedisTemplate pre >两者的关系是StringRedisTemplate继承了RedisTemplate。
两者之间的数据不通用;也就是说StringRedisTemplate只能管理StringRedisTemplate中的数据,RedisTemplate也只能管理RedisTemplate中的数据。
SDR默认采用两种序列化策略,一种是String序列化策略,一种是JDK序列化策略。
StringRedisTemplate默认使用String序列化策略,保存的key和value使用此策略进行序列化和保存。RedisTemplate默认使用JDK序列化策略,保存的键和值都是使用该策略序列化保存的。
杰迪斯方法:
通过redis.clients.jedis.JedisPool进行管理,即通过pool进行管理,通过pool对象获取jedis实例,然后通过jedis实例直接操作redis服务。与业务无关的冗余代码已被消除,例如以下代码片段:
private JedisPool jedisPool;public String save(String key ,String val) { Jedis jedis = jedisPool.getResource();return jedis.set(key, val);}工厂类到pool的变化相当于mybatis连接mysql的变化。代码变的更简洁,更容易维护。 Jedis使用apache commons-pool2来管理Jedis资源池,所以定义JedisPool时一个非常重要的参数就是资源池GenericObjectPoolConfig。使用方法如下,其中有很多参数用于资源管理和使用。
参数说明
JedisPool确保资源在可控范围内,并提供线程安全,但合理的GenericObjectPoolConfig配置可以保护使用Redis的应用程序,下面将对一些重要参数进行解释和建议:
在当前环境下,Jedis连接是资源,JedisPool管理Jedis连接。
1.资源设置及使用
maxTotal:资源池最大连接数;默认值:8 设置建议见下一节
maxIdle:资源池允许的最大空闲连接数;默认值:8;使用建议:设置建议见下一节
minIdle:资源池保证最小空闲连接数;默认值:0;使用建议:设置建议见下一节
blockWhenExhausted:当资源池耗尽时,调用者是否应该等待。仅有的true时,maxWaitMillis以下才会生效;默认值:true;使用建议:建议使用默认值
maxWaitMillis:当资源池连接耗尽时,调用者的最大等待时间(单位毫秒) -1:表示永不超时;使用建议:不建议使用默认值
testOnBorrow:从资源池借用连接时是否进行连接有效性检测(ping),无效连接将被移除;默认值: false;使用建议:业务量较大时,建议设置为false(多ping一次的费用)。
testOnReturn:将连接返回到资源池时是否进行连接有效性检测(ping),无效连接将被移除;默认值: false;使用建议:当业务量较大时,建议设置为false(多1个ping的费用)。
jmxEnabled:是否启用jmx监控,可用于监控;默认值:true;使用建议:建议启用,但应用程序本身也必须启用2.空闲资源监控
空闲Jedis对象检测是通过以下四个参数组合完成的。 testWhileIdle就是这个函数的开关。
testWhileIdle:是否开启空闲资源监控;默认值:假;使用建议:true
timeBetweenEvictionRunsMillis:空闲资源检测周期(单位:毫秒);默认值:-1:不检测;使用建议:推荐设置,选择自己的周期,也可以使用默认或者使用下面JedisPoolConfig中的配置
minEvictableIdleTimeMillis:资源池中资源的最小空闲时间(单位:毫秒),达到该值后,空闲资源将被移除;默认值:1000 60 30 = 30 分钟;使用建议:您可以根据自己的业务来决定,m大部分默认值就足够了,也可以考虑使用下面JeidsPoolConfig中的配置
numTestsPerEvictionRun:在做空闲资源检测时,每次的样本数;默认值:3;使用建议:可以根据自己应用的连接数进行微调。如果设置为-1,则会对所有连接进行空闲监控感谢您的阅读!看完上面的内容,你是不是对redis和jedis的区别有了一个大概的了解了呢?希望文章的内容对大家有所帮助。如果您想了解更多相关文章,请关注行业资讯频道。
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > redis和jedis有什么区别