java集成Redis
依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
</dependency>
// 创建一个 Jedis 的连接
Jedis jedis = new Jedis(“127.0.0.1”, 6379);
// 密码认证 如果设置了密码,就需要进行认证
jedis.auth(“offcn123”);
// 执行 redis 命令
jedis.set(“mytest”, “hello world, this is jedis client!”);
Spring整合Redis
依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
@ComponentScan(basePackages = "demos")
@Configuration
public class Application{
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate template=new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
template.setDefaultSerializer(new StringRedisSerializer());
return template;
}
@Bean
public RedisConnectionFactory redisConnectionFactory(){
RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration();
JedisConnectionFactory factory=new JedisConnectionFactory(configuration);
return factory;
}
public static void main(String args[]){
ApplicationContext context = new AnnotationConfigApplicationContext(Application.class);
RedisTemplate redis = context.getBean(RedisTemplate.class);
redis.opsForValue().set("11", "222");
System.out.println( bean.opsForValue().get("11"));;
}
}
Redis序列化
1、当我们使用RedisTemplte对数据进行操作的时候它会采用序列化的方式将我们的数据存入redis
2、RedisTemplte默认使用序列化方式是我们的JDK序列化
3、区别:
JdkSerializationRedisSerializer序列化后长度最小,Jackson2JsonRedisSerializer效率最高。
如果综合考虑效率和可读性,牺牲部分空间,推荐key使用StringRedisSerializer,保持的key简明易读;value可以使用Jackson2JsonRedisSerializer
如果空间比较敏感,效率要求不高,推荐key使用StringRedisSerializer,保持的key简明易读;value可以使用JdkSerializationRedisSerializer
总结:
1、Redis支持的序列化方式
- JdkSerializationRedisSerializer:默认值
- Jackson2JsonRedisSerializer
- StringRedisSerializer :推荐
SpringBoot整合Redis
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置application.yml
spring:
redis:
host: localhost
port: 6379
注入spring容器
@SpringBootApplication
@EnableScheduling
public class ReptilesCoreApplication {
public static void main(String[] args) {
SpringApplication.run(ReptilesCoreApplication.class, args);
}
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
@Bean
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory factory){
StringRedisTemplate template = new StringRedisTemplate();
template.setConnectionFactory(factory);
return template;
}
}
使用
@Autowired
public StringRedisTemplate redisTemplate;
//将数据放入redis中
ValueOperations<String, String> forValue = redisTemplate.opsForValue(); forValue.set(key,value);
//将id放入当做唯一标识,识别是否存储
SetOperations<String, String> forSet = redisTemplate.opsForSet();
forSet.add(RedisKeyEnum.IDS.getKey(),article.getId());
使用redisTemplate对象对Redis进行操作。