Jedis与RedisTemplate的区别:
Jedis
是Redis
官方推荐的、面向Java
的操作Redis
的客户端,可以用JedisPool
来获得连接进行get、set、del
等操作相对简单,- 而
RedisTemplate
是SpringDataRedis
中对JedisApi
的高度封装。
SpringDataRedis
相对于Jedis
来说,可以方便地更换Redis
的Java
客户端,还比Jedis
多了自动管理连接池的特性,方便与其他Spring
框架进行搭配使用,如:SpringCache
。
redisTemplate
与stringRedisTemplate
的区别
- 第一点,
StringRedisTemplate
继承了RedisTemplate
。 - 第二点,
RedisTemplate
是一个泛型类,而StringRedisTemplate
则不是。 - 第三点,
StringRedisTemplate
只能对key=String
,value=String
的键值对进行操作,
RedisTemplate
可以对任何类型的key-value
键值对操作。 - 第四点,序列化的方式不同,但最终都是得到了一个字节数组,殊途同归。
StringRedisTemplate
使用的是StringRedisSerializer
类;RedisTemplate
使用的是JdkSerializationRedisSerializer
类。- 反序列化,则是一个得到
String
,一个得到Object
。
小结:
打开StringRedisTemplate
和RedisTemplate
的源码,会发现StringRedisTemplate
继承了RedisTemplate
,一般来说子类应该比父类有着更强大的功能,但此处却不是,
因为RedisTemplate
是泛型类,而在StringRedisTemplate
继承RedisTemplate
类时,则是指定了泛型的类型,两个String
。
这就直接导致了,StringRedisTemplate只能处理String-String的键值对数据,而RedisTemplate则可以处理任何类型的键值对。
源码:
- RedisTemplate源码:
public class RedisTemplate<K, V> extends RedisAccessor implements RedisOperations<K, V>, BeanClassLoaderAware {}
- StringRedisTemplate源码:
public class StringRedisTemplate extends RedisTemplate<String, String> {}
spring redis的相关配置
spring.redis.host=
spring.redis.port=
# 连接池中最少空闲的连接数
spring.redis.jedis.pool.min-idle=
# 当连接池资源耗尽时,调用者最大的阻塞时间,超出时将抛出异常。单位:ms,默认-1,表示永不超时
spring.redis.jedis.pool.max-wait=
# 连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal
spring.redis.jedis.pool.max-active=
# 连接池中最大空闲的连接数数
spring.redis.jedis.pool.max-idle=
spring.redis.database=
spring.redis.timeout=
标签:String,区别,spring,redis,Jedis,StringRedisTemplate,RedisTemplate
From: https://www.cnblogs.com/fuqian/p/17326507.html