一 java链接redis
1.引入redis的依赖jar包
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.0</version>
</dependency>
</dependencies>
2 java代码操作redis
2.1 先获取链接对象
Jedis jedis=new Jedis("192.168.118.3",6379);
2.2 操作String数据类型
jedis.set("k1","v1");
jedis.set("k2","v2");
jedis.setnx("k1","v3");
jedis.mset("k3","v3","k4","v4","k5","v5");
List<String> mget = jedis.mget("k1", "k2", "k3", "k4");
System.out.println(mget);
输出结果
linux中输出结果
2.3 操作hash类型
Map map=new HashMap();
map.put("name","xyf");
map.put("age","22");
map.put("sex","男");
jedis.hset("k1",map);
Map<String, String> map1 = jedis.hgetAll("k1");
System.out.println(map1);
输出结果
二 springboot整合redis
1.创建一个springboot 项目
2.引入redis整合依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
3.在配置文件中配置链接链接路径和端口号
spring.redis.host=192.168.118.3 //自己虚拟机的ip
spring.redis.port=6379 //若果默认端口号没有修改,端口号可以不写
4.测试 --StringRedistemplace(对String类型的操作)
@Autowired
StringRedisTemplate stringRedisTemplate; //存放的数据类型为String数据类型
@Test
void contextLoads() {
ValueOperations<String,String > ops=stringRedisTemplate.opsForValue();
ops.set("k1","springboot-v1");
System.out.println(ops.get("k1"));
Boolean aBoolean = ops.setIfAbsent("k2", "java难吗?");
System.out.println(aBoolean);
Map<String,String> map=new HashMap<>();
map.put("name","张三");
map.put("age","18");
map.put("name","李四");
ops.multiSet(map);
System.out.println(stringRedisTemplate.keys("*"));
测试结果
4.2.对hash数据类型的测试
HashOperations<String,Object,Object> hash = stringRedisTemplate.opsForHash();
hash.put("k1","name","xyf");
hash.put("k1","age","18");
Object o=hash.get("k1","name");
System.out.println(hash.keys("k1"));
System.out.println(hash.values("k1"));
System.out.println(o);
System.out.println(hash.entries("k1"));
测试结果
5 测试----------RedisTemplate
RedisTemplate的key和value可以存放Object类型,所以它的key和value默认采用的序列化方式为JDK序列化方式。一般我们需要为key和value指定序列化方式。
1.操作String数据类型的
@Autowired
RedisTemplate redisTemplate=new RedisTemplate();
@Test
void contextLoads() {
redisTemplate.setKeySerializer(new StringRedisSerializer()); //指定key值得序列化方式
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); //指定value的序列化方式
ValueOperations valueOperations=redisTemplate.opsForValue();
valueOperations.set("k1",new User("xyf",22,"郑州"));
Object k1=valueOperations.get("k1");
System.out.println(k1);
}
结果
、
2.操作Hash 数据类型
@Test
void contextLoadsHash(){
redisTemplate.setKeySerializer(new StringRedisSerializer()); //对key进行序列化
redisTemplate.setValueSerializer(new StringRedisSerializer()); //对value值进行序列化
redisTemplate.setHashKeySerializer(new StringRedisSerializer()); //对hashkey进行序列化
redisTemplate.setHashValueSerializer(new StringRedisSerializer()); //对hashvalue值进行序列化
HashOperations hash= redisTemplate.opsForHash();
hash.put("u","name","xyf");
hash.put("u","age","18");
hash.put("u","addr","zz");
System.out.println(hash);
}
结果
三 连接集群
1.哨兵模式
在配置文件中配置好
spring.redis.sentinel.master=mymaster //与linux中队master 的命名一样
spring.redis.sentinel.nodes=192.168.118.3:26379 //哨兵
配完之后和之前操作没什么区别
2.集群模式
在配置文件中配置集群
spring.redis.cluster.nodes=192.168.118.3:7001,192.168.118.3:8001,192.168.118.3:9001,192.168.118.3:7002,192.168.118.3:8002,192.168.118.3:9002
配置完之后对数据的操作和之前的一样