对于java,常用的客户端有:
Jedis,springDataRedis,Redission
Jedis:操作简单,适合入门
SpringDataRedis: spring必备,可以通过yml进行相应配置
Redission: Redis的分布式
本篇重点还是讲讲SpringDataRedis
首先,导入spring-data-redis依赖:
<!-- spring-data-redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
为了提升redis的性能,我们最好添加一下pool:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
依赖引入完毕,开始配置yml
spring:
# redis配置
redis:
#Redis服务器地址
host:
#Redis服务器连接端口
port: 6379
#Redis数据库索引(默认为0)
database: 0
#连接超时时间(毫秒)
timeout: 1800000
lettuce:
pool:
max-active: 8 # 最大连接数
max-idle: 8 #最大空闲连接
min-idle: 0 #最小空闲连接
max-wait: 100 #连接等待时间
整合完毕,就可以基本的使用它了,来个简单小test
spring-data-redis提供一个RedisTemple对象来提供具体方法来进行具体的redis操作
对Sting的操作和对hash的操作:
自定义RedisTemple的序列化规则
spring-data-redis它是可以对redistemple进行自定义的,这样我们就可以对Redistemple进行自定义的序列化规则
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory)
{
RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
FastJsonRedisSerializer serializer = new FastJsonRedisSerializer(Object.class);
// 使用StringRedisSerializer来序列化和反序列化redis的key值
template.setKeySerializer(new StringRedisSerializer());
// 值用Json来进行序列化value值
template.setValueSerializer(serializer);
// Hash的key也采用StringRedisSerializer的序列化方式
template.setHashKeySerializer(new StringRedisSerializer());
template.setHashValueSerializer(serializer);
template.afterPropertiesSet();
return template;
}
我们可以将对象Json序列化,进行存储,但是,这样有什么缺点呢?我们来看:
在redis中,我们看到保存的Json序列化的对象多了一行
@class:com.example.pojo.People
这是因为为了在反序列化时,能知道最后反序列化出来的是哪个对象。
这样的缺点是:当数据量增大时,内存的花销很大!这显然是不经济的。
所以我们在自定义序列化规则的时候,应该将对象转成String,再保存
之后再调用Json转对象工具,转回来。