导入对应的依赖
<dependencies> <!-- jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.2.3</version> </dependency> <!-- fastjson--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.79</version> </dependency> </dependencies>
连接数据库
记得在本地打开redis
// 1. new Jedis Jedis jedis = new Jedis("127.0.0.1",6379); System.out.println(jedis.ping());
测试
System.out.println("添加一个值username:"+jedis.set("username", "huisnaya")); System.out.println("添加一个值password:"+jedis.set("password", "123456")); System.out.println("查询一个值username:"+jedis.get("username")); System.out.println("查询一个值password:"+jedis.get("password")); System.out.println("查询所有的键:"+jedis.keys("*")); System.out.println("清空当前数据库;" + jedis.flushDB()); /** 结果: 添加一个值username:OK 添加一个值password:OK 查询一个值username:huisnaya 查询一个值password:123456 查询所有的键:[password, username] 清空当前数据库;OK **/
事务成功
public static void main(String[] args) { Jedis jedis = new Jedis("127.0.0.1", 6379); Transaction multi = jedis.multi(); //开启事务 try { multi.set("user1","hahah");//指令入队 multi.set("user2","xixixi"); multi.exec();//执行事务 }catch (Exception e){ multi.discard(); //放弃事务 e.printStackTrace(); }finally { System.out.println(jedis.get("user1")); System.out.println(jedis.get("user2")); jedis.close();//关闭连接 } } 结果: hahah xixixi
事务失败
public static void main(String[] args) { Jedis jedis = new Jedis("127.0.0.1", 6379); jedis.flushDB(); //清空上一次的值 Transaction multi = jedis.multi(); //开启事务 try { multi.set("user1","hahah");//指令入队 multi.set("user2","xixixi"); int i = 1/0; multi.exec();//执行事务 }catch (Exception e){ multi.discard(); //放弃事务 e.printStackTrace(); }finally { System.out.println(jedis.get("user1")); System.out.println(jedis.get("user2")); jedis.close();//关闭连接 } } 结果: null null
java远程连接reids
第一步开启6379这个端口号,防火墙要开启
firewall-cmd --zone=public --add-port=8080/tcp --permanent 开启8080端口防火墙 systemctl restart firewalld.service 刷新防火墙 firewall-cmd --list-ports 查看防火墙的端口
第二步修改配置文件
注意:用redis-cli连接时要登录面
[root@shuisanya bin]# redis-cli 127.0.0.1:6379> auth 123456 OK
java测试
public class Test { public static void main(String[] args) { // 1. new Jedis Jedis jedis = new Jedis("47.96.26.127",6379); jedis.auth("123456"); System.out.println("添加一个值username:"+jedis.set("username", "huisnaya")); System.out.println("添加一个值password:"+jedis.set("password", "123456")); System.out.println("查询一个值username:"+jedis.get("username")); System.out.println("查询一个值password:"+jedis.get("password")); System.out.println("查询所有的键:"+jedis.keys("*")); // System.out.println("清空当前数据库;" + jedis.flushDB()); jedis.close(); } }
这个时候你在redis-cli中查看就有了
127.0.0.1:6379> keys * 1) "username" 2) "password" 127.0.0.1:6379> get username "huisnaya" 127.0.0.1:6379>
导入依赖
<!-- redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
编写配置文件
spring.redis.host=127.0.0.1 spring.redis.port=6379
测试
@Test void contextLoads() { redisTemplate.opsForValue().set("haha","哈哈哈"); System.out.println(redisTemplate.opsForValue().get("haha")); System.out.println(redisTemplate.keys("*")); }
编写一个配置类 来序列化操作
package com.mhy.springredis.config; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration public class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); // 配置具体的序列化方式 Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(objectMapper); StringRedisSerializer redisSerializer = new StringRedisSerializer(); template.setKeySerializer(redisSerializer); template.setHashKeySerializer(redisSerializer); template.setValueSerializer(jackson2JsonRedisSerializer); template.setHashValueSerializer(jackson2JsonRedisSerializer); return template; } }