Java连接Redis笔记

一、Java连接Redis的方法

1.1、创建Maven工程并导入需要的依赖
<dependencies>
	<!-- Jedis-->
	<dependency>
		<groupld>redis.clients</groupld>
		<artifactld>jedis</artifactld>
		<version>2.9.0</version>
	</dependency>
	<	!--2、Junit测试-->
	<dependency>
		<groupld>j unit</groupld>
		<artifactld>j unit</artifactld>
		<version>4.12</version>
	</dependency>
	<!--3、 Lombok-->
	<dependency>
		<groupld>org.projectlombok</groupld>
		<artifactld>lombok</artifactld>
		<version>1.16.20</version>
	</dependency>
〈/dependencies〉
1.2、测试代码
public class Denol {
	@Test
	public void set(){
		//1 .连接Redis
		Jedis jedis = new Jedis("192.168.199.109",6379);
		//2.操作Redis -因为Redis的命令是什么,Jedis的方法就是什么 jedis.set("name'*,"李四”);
		//3.释放资源
		jedis.close();
	}
	@Test
	public void get(){
		//1 .连接Redis
		Jedis jedis = new Jedis('192.168.199.109",6379);
		〃2.操作Redis -因为Redis的命令是什么,Jedis的方法就是什么 String value = jedis.get("name");
		System.out.println(value);
		//3.释放资源
		jedis.close();
	}
}

二、Jedis存储一个对象到Redis以byte[]的形式

2.1、准备一个实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {
	private Integer id;
	private String name;
	private Date birthday;
	//省略get/set方法
}
2.2、导入依赖
< !― 4.导入spring-context —> 
<dependency>
    <groupld>org.springframework</groupId>
    <artifactld>spring-context</artifactld> 
    <version>4.3.18.RELEASE</version>
</dependency>
2.3、业务实现
public class Demo2 {
	//存储对象-以byte[]形式存储在Redis中
	@Test
	public void setByteArray(){
		//1.连接Redis服务
		Jedis jedis = new Jed is("192.168.199.109 ", 6379);

		〃2.1 准备 key(St ring)-value (User)
		String key = "user";
		User value = new User(1,"张三",new Date());
		//2.2 将key和value转换为byte[]
		
		byte[] byteKey = SerializationUtils.serialize(key);
		byte[] byteValue = SerializationUtils.serialize(value); //2.3 将key和value存储到Redis
		jedis.set(byteKey,byteValue);
		
		//3.释放资源
		jedis.close();
	}
	//获取对象-以byte[]形式在Redis中获取
	@Test
	public void getByteArray(){
		//1.连接Redis服务
		Jedis jedis = new Jed is("192.168.199.109",6379);

		//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.printIn("user:	+ user);
		//3.释放资源
		jedis.close():
	}
}

三、Jedis存储一个对象到Redis以String的形式

3.1、导入依赖
<!--导入fastJSON -->
<dependency>
	<groupld>com.alibaba</groupld> 
	<artifactld>fastj son</artifactld> 
	<version>1.2.47</version>
</dependency>
3.2、测试代码
public class Demo3 {
	//存储对象-以String形式存储
	@Test
	public void setString(){
		//1.连接Redis
		Jedis jedis = new Jed is(H192.168.199.109",6379);
		//2.1 准备 key(St ring)-value (User)
		String stringKey = stringllser ';
		User value = new User(2,"李四",new Date());
		//2.2使用fastJSON将value转化为json字符串
		String stringValue = JSON.toJSONString(value);
		//2.3存储到Redis中
		jedis.set(stringKey,stringValue);
		//3.释放资源
		jedis.close();
	}
	//获取对象-以String形式获取
	@Test
	public void getString()(
		//1.连接Redis
		Jedis jedis = new Jedis("192.168.199.109",6379);
		//2.1准备一个key
		String key = "stringUser";
		//2.2 去Redis中查询value
		String value = jedis.get(key):
		//2.3将value反序列化为User
		User user = JSON.parseObject(value, User.class);
		//2.4輸出
		System.out.printIn('user:	+ user);
		//3.释放资源
		jedis.close();
	}
}

四、Jedis连接池的操作

使用连接池操作Redis,避免频繁创建和销毁链接对象消耗资源

@Test
public void pool2(){
	//I.创建连接池配置信息
	GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
	poolConfig.setMaxTotal(100); //连接池中最大的活跃数 
	poolConfig.setMaxIdle(10);	// 最大空闲数
	poolConfig.setMinIdle(5);	// 最小空闲数
	poolConfig.setMaxWaitMillis(3000); //当连接池空了之后,多久没获取至JJedis对象,就超时
	//,创建连接池
	JedisPool pool = new JedisPool( poolConfig, u 192.168.199.10911,6379);
	//3.通过连接池获取jedis对象
	Jedis jedis = pool.getResource();
	//4.操作
	String value = jedis.get( stringUser");
	System.out.printIn("user: + value);
	//5.释放资源
	jedis.close();
}

五、Redis的管道操作

因为在操作Redis的时候,执行一个命令需要先发送请求到Redis服务器,这个过程需要经历网络的延退,Redis还需要给客户端一个响+应。
如果我需要一次性执行很多个命令,上述的方式效率很低,可以通过Redis的管道,先将命令放到客户端的一个Pipeline中,之后一次 性的将全部命令都发送到Redis服务,Redis服务一次性的将全部的返回结果响应给客户端。

// Redis管道的操作
@Test
public void pipeline(){
	//1 .创建连接池
	JedisPool pool = new JedisPool("192.168.199.109",6379);
	long q= System.currentTimeMillis();
	

	//2.获取一个连接对象
	Jedis jedis = pool.getResource();
	//3.创建管道
	Pipeline pipelined = jedis.pipelined();
	//3.执行incr - 100080次放到管道中
	for (int i = 0; i < 100000; i++) { pipelined.incr("qq”);
	}
	//4.执行命令 
	pipelined.syncAndReturnAll();
	//5.释放资源 
	jedis.close();
	System.out.printIn(System.currentTimeMiIlls() - q);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空圆小生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值