Redis —— jedis,SpringBoot整合redis

Jedis

使用java来操作Redis
Jedis是Redis官方推荐的连接开发工具,使用java操作Redis中间件,如果要使用java操作redis,那么一定要对redis十分的熟悉

使用Jedis
1.在pom.xml中导入对应的依赖

<!-- jedis依赖 -->
<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis<artifactId>
	<version>3.2.0</version>
</dependency>
<!-- fastjson -->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson<artifactId>
	<version>1.2.62</version>
</dependency>

2.编码测试
连接数据库-操作命令-断开连接

public class Test(
	public static void main(String[] args){
		//new一个jedis对象
		Jedis jedis = new Jedis("127.0.0.1",6379); //第一个参数是连接redis的地址;第二个参数是ip端口号
		//jedis所有的方法就是redis中命令
		//测试是否连接成功,返回PONG为连接成功	
		System.out.println(jedis.ping()); 

		//开启事务
		Transaction multi = jedis.multi();
		//执行命令
		try{
			multi.set("k1",v1);
			multi.set("k2",v2);
			multi.exec();//没有出现异常,执行事务
		}catch(Exception e){
			multi.discard();//出现异常,放弃事务
			e.printStackTrace();
		}finally{
			//关闭连接
			jedis.close(); 
		}
	}
)

SpringBoot整合

SpringBoot操作数据:spring-data jpa jdbc redis;
创建SpringBoot项目时在NoSQL中选中spring data redis即可
说明:在SpringBoot2.x之后,原来使用的jedis被替换为了lettuce
jedis:采用直连,多个线程操作的话,是不安全的,如果想要避免不安全的,谁用jedis pool连接池,更像BIO模式
lettuce:采用netty,实例可以再多个线程中进行共享,不存在线程不安全的情况,可以减少线程数据了,更像NIO模式
自动配置类都会绑定一个properties配置文件,redis的自动配置类RedisAutoConfiguration,自动配置类通过注解EnableConfigurationProperties(RedisProperties.class)绑定了RedisProperties,在RedisProperties类中可以看到需要配置的项

整合步骤:

  • 导入依赖
  • 配置redis
  • 测试连接
@Autowired
private RedisTemplate redisTemplate;

@Test
void contextLoads(){
	//操作字符串String
	redisTemplate.opsForValue();
	//操作列表List
	redisTemplate.opsForList();
	//获取连接
	RedisConnection connection = redisTemplate.getConnectionFactory.getConnection();
	//清空当前库
	connection.flushDb();
}

自定义RedisTemplate

@Configuration
public class RedisConfig{
	@Bean
	public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)throws UnknowHostException{
		//一般为了方便使用,直接使用类型
		RedisTemplate<String,Object> template = new RedisTemplate<>();
		template.setConnectionFactory(redisConnectionFactory);
		
		//序列化配置
		Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>();
		//进行转义
		ObjectMapper om = new ObjectMapper();
		om.setVisibility(PropertyAccessor.All,JsonAutoDetect.Visibility.ANY);
		om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
		jackson2JsonRedisSerializer.setObjectMapper(OM);
		//String的序列化
		StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
		//字符串和hash的key采用String的序列化方式
		template.setKeySerializer(stringRedisSerializer);
		template.setHashKeySerializer(stringRedisSerializer);
		//字符串和hash的value采用jackson的序列化方式
		template.setValueSerializer(jackson2JsonRedisSerializer);
		template.setHashValueSerializer(stringRedisSerializer);
		template.afterPropertiesSet();
		return template;
	}
}

你可能感兴趣的:(Redis,redis)