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] 举报,一经查实,本站将立刻删除。