十一、Redis使用管道(Pipeline)提升性能
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了十一、Redis使用管道(Pipeline)提升性能,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3160字,纯文字阅读大概需要5分钟。
内容图文
Redis服务是一种C/S模型,即客户端发起请求,服务端处理并返回结果给客户端,如果Redis客户端要发送很多条请求,后面的请求需要等待前面的请求处理完后才能进行处理,而且每个请求都存在往返时间,即使redis性能极高,当数据量足够大,也会极大影响性能,所以Redis为了改进该问题,引入了管道技术:可以在服务端未及时响应的时候,客户端也可以继续发送命令请求,做到客户端和服务端互不影响,服务端并最终返回所有服务端的响应,大大提高了C/S模型交互的响应速度;(比如批量对Redis操作)
1、在redisTemplate使用管道Pipeline
package com.gaia.test.redisTest.Pipeline;
import com.gaia.user.model.UserDO;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Pipeline;
import java.util.List;
/**
* Description:
*
* @author xuzhiqiang
* Date 2020/12/15
*/
public class JedisPipeline {
private static ApplicationContext context;
public static void main(String[] args) {
context = new ClassPathXmlApplicationContext("classpath:spring-base-redis.xml");
RedisTemplate<String, Object> redisTemplate = context.getBean(RedisTemplate.class);
//系列化有坑
RedisSerializer keySerializer = redisTemplate.getKeySerializer();
RedisSerializer valueSerializer = redisTemplate.getValueSerializer();
List<Object> list = redisTemplate.executePipelined(new RedisCallback<Long>() {
@Override
public Long doInRedis(RedisConnection redisConnection) throws DataAccessException {
redisConnection.openPipeline();
for (int i = 0; i<1000; i++) {
String key = "pipValue"+i;
redisConnection.set(keySerializer.serialize(key),valueSerializer.serialize(key));
}
return null;
}
});
list.forEach((Object obj)->{
System.out.println("value="+obj.toString());
});
}
}
2、在jedis中使用管道Pipeline
package com.gaia.test.redisTest.Pipeline;
import com.gaia.user.model.UserDO;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Pipeline;
import java.util.List;
/**
* Description:
*
* @author xuzhiqiang
* Date 2020/12/15
*/
public class JedisPipeline {
private static ApplicationContext context;
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1", 6379);
//jedis.auth("123456");
Pipeline pipeline = jedis.pipelined();
//批量操作
for (int i=0; i<10; i++) {
pipeline.incr("ppKey");
}
pipeline.sync();
System.out.println(jedis.get("ppKey"));
}
}
内容总结
以上是互联网集市为您收集整理的十一、Redis使用管道(Pipeline)提升性能全部内容,希望文章能够帮你解决十一、Redis使用管道(Pipeline)提升性能所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。