微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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{
		//一般为了方便使用,直接使用<String,Object>类型
		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;
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐