十四、Redis学习笔记(二) | 青训营笔记

125 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第14天

这篇主要是继上篇之后,写Java如何连接redis

java连接redis有两种,分别是 Jedis 和Lettuce两种方式,这边使用Jedis会方便一些

导入依赖

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>3.1.0</version>

</dependency>

在本地连接服务器端的redis时, 需要注释掉配置文件中的 bin 127.0.0.1 并且添加 bin 0.0.0.0

1·、连接测试

创建一个jedis对象,传入路径和端口,,若设有密码,先运行 jedis.auth方法 进行密码验证,若没有就不需要了 ,使用jedis连接的好处,在redis中的命令是什么,jedis中对应的方法名就叫什么,方便记忆和使用

Jedis jedis=new Jedis("47.108.157.128",6379); 
jedis.auth("123456"); jedis.set("name","摘星");
jedis.close();

使用字节数组的方式存放对象到jedis中,

需要导入一个spring的依赖,将对象序列化。

准备一个实体类,然后需要实现Serializable 接口才能序列化

public class User implements Serializable { 
private Integer id; private String name; private Date brity; 
}

开始添加

public void set(){
Jedis jedis=new Jedis("47.108.157.128",6379);
jedis.auth("123456");
// 2.1 准备key(String)-value(User) 
String key ="user"; User value=new User(1,"张三",new Date());
// 2.2key和value转换为byte[] byte[] byteKey = SerializationUtils.serialize(key);
byte[] byteValue = SerializationUtils.serialize(value);
// 2.3key和value存储到Redis jedis.set(byteKey,byteValue);
jedis.close();
}

开始获取

public void get(){
// 1. 连接Redis服务 
Jedis jedis = new Jedis("47.108.157.128",6379);
jedis.auth("123456");
//----------------------------- //
2.1 准备key String key = "user";
// 2.2 将key转换为byte[]
byte[] bytekey=SerializationUtils.serialize(key);
// 2.3 jedis去Redis中获取value
byte[] value=jedis.get(bytekey);
// 2.4 将value反序列化为User对象
User user = (User) SerializationUtils. deserialize(value);
// 2.5 输出 System.out.println("user:"+user);
//------------------------------ //
3. 释放资源 jedis.close();

连接池操作

@Test public void pool(){ 
//1、创建连接池配置、 JedisPoolConfig config=new JedisPoolConfig();
// 连接池的配置对象 config.setMaxTotal(100); 
// 设置最大连接数 config.setMaxIdle(10);
// 设置最大空闲连接数 config.setMinIdle(5);
//最小空闲数 //
2、创建连接池配置 JedisPool pool=new JedisPool(config,"47.108.157.128", 6379,3000,"123456"); 
//2、通过连接池获取对象 Jedis k= pool.getResource(); 
//3、操作 k.set("name","ke88r"); //4、释放资源 k.close(); 
}

管道操作

@Test
public void pipeline(){ 
//1、创建连接池 JedisPool pool=new JedisPool("47.108.157.128", 6379);
//2、获取连接对象 Jedis jedis=pool.getResource(); jedis.auth("123456");
// 3、创建一个管道 // 这里相当于是把所有要执行的操作放入管道, 然后最后一起执行
Pipeline pipeline=jedis.pipelined(); pipeline.incr("kk");
//4、执行命令 pipeline.syncAndReturnAll(); 
//5、释放资源 jedis.close();
}

redis事务

redis的事务是一次性操作,该成功的成功,该失败的失败,

先开启事务,执行一些列的命令,但是命令不会立即执行,会被放在一个队列中,如果执行事务,这个队列中的命令会全部执行,如果取消事务,这个队列的命令则全部作废。

Springboot整合Redis

Spring Boot Data(数据) Redis 中提供了RedisTemplate和StringRedisTemplate,

其中StringRedisTemplate是RedisTemplate的子类,两个方法基本一致,不同之处主要体现在操作的数据类型不同,RedisTemplate中的两个泛型都是Object,意味着存储的key和value都可以是一个对象,

而StringRedisTemplate的两个泛型都是String,意味着StringRedisTemplate的key和value都只能是字符串。

注意: 使用RedisTemplate默认是将对象序列化到Redis中,所以放入的对象必须实现对象序列化接口