Redis管道功能
Redis管道,Redis存储用户浏览数据
当频繁的存储获取Redis数据库中的数据时,可以使用Redis的pipeline(管道)功能,将多个相互没有依赖关系的读写操作,如:下一步执行的Redis操作的开启需要获取上一步操作执行结束的数据。放到队列中,使用pipeline对象一次性执行,可以很大程度上减少与数据库建立TCP连接的性能损耗。(使用场景:用户浏览历史, 注册登录短信验证码,图片验证码)
class RecommendJobView(GenericAPIView):
"""推荐职位视图"""
# 更具用户浏览最多的职位的(技术栈)的倒序,序列化器返回数据和最新数据一样,因为存储数据和查询数据都与redis有关,所以不适用ListAPIView
serializer_class = PostJobSerializer def perform_authentication(self, request):
pass
...
def post(self, request):
# 用户浏览数据存储在redis,user_id作为主键,采用list存储职位id
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
redis_conn = get_redis_connection('job')
pl = redis_conn.pipeline()
# 去重
pl.lrem('user_id_%s' % user.id, 0, job_id)
# 保存,增加
pl.lpush('user_id_%s' % user.id, job_id)
# 保留规定长度的数据
pl.ltrim('user_id_%s' % user.id, 0, constants.MAX_Job_VIEW_HISTORY-1)
pl.execute()
...
Redis管道功能的更多相关文章
- Redis管道理解
		Redis管道理解 简介 管道并不是Redis本身提供的功能,通常是客户端提供的功能: 管道就是打包多条无关命令批量执行,以减少多个命令分别执行消耗的网络交互时间(TCP网络交互),可以显著提升Red ... 
- (3)redis队列功能
		Redis队列功能介绍 List 常用命令: Blpop删除,并获得该列表中的第一元素,或阻塞,直到有一个可用 Brpop删除,并获得该列表中的最后一个元素,或阻塞,直到有一个可用 Brpoplpus ... 
- Redis 管道技术
		Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务.这意味着通常情况下一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响 ... 
- 3.Redis高级功能
		3.Redis高级功能3.1 慢查询分析3.1.1 慢查询的两个配置参数3.1.2 最佳实践3.1.3 单线程架构3.2 Redis Shell3.2.1 redis-cli 详解3.2.2 redi ... 
- redis管道技术
		1.redis管道pipeline解决的问题: 由于redis通信是通过tcp协议基础,并且是堵塞的处理方式,在第一个请求没有执行并返回前,无法处理第二个请求.所以事件浪费在了网络传输和堵塞请求中. ... 
- redis学习(六)redis管道
		redis管道 1.redis管道介绍 redis采用的是CS架构,客户端与服务器端通过tcp协议进行连接通信,因此无论是发出请求还是接收响应,都必须经过网络传输.在tcp连接过程中,客户端和服务器端 ... 
- 缓存数据库-redis(管道)
		一:Redis 管道技术 Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务.这意味着通常情况下一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听Socket返回,通常 ... 
- 关闭redis持久化功能
		关闭redis持久化功能持久化会报如下信息 会影响硬盘写入性能 所以没什么用 就关掉吧 修改redis配置文件,redis.conf 第115行左右. 1.注释掉原来的持久化规则 <pre> ... 
- linux学习(三)输入输出重定向和管道功能、cat命令、more命令
		目录 输入输出重定向 输出重定向 管道功能 cat命令 more命令 @(输入输出重定向和管道功能) 输入输出重定向 输入重定向可以让用户将某个文件作为输入设备,输出重定向可以把某个文件作为输出设备, ... 
随机推荐
- Hive中数据加载失败:root:supergroup:drwxr-xr-x
			Hive中数据加载失败:inode=:root:supergroup:drwxr-xr-x 在执行hive,数据加载的时候,遇到了一个错误,如下图: 在执行程序的过程中,遇到权限问题很正常,背后原理也 ... 
- ReactiveCocoa的学习内容
			ReactiveCocoa • 知识备用库:iOS10 collectionView以前是复用的,但是iOS10以后就要设置一个属性才可以复用. • C语言面向过程编程,OC面向对象编程 • 链式编程 ... 
- input 特殊字符限制
			ng-pattern="/^[A-Za-z0-9_,\.\u4e00-\u9fa5\s]+$/" 
- jQuery 的自定义事件
			jQuery 中,想要自动触发自定义事件,必须满足2个条件: 1.事件必须是通过on 来绑定的. 2.事件必须是通过trigger / triggerHandler 来触发. 格式如下: $(fun ... 
- 初读"Thinking in Java"读书笔记之第八章 --- 多态
			再论向上转型 在某些方法中,仅接收基类作为参数,而不是特殊的导出类,会使得程序更容易扩展. 转机 方法调用绑定 前期绑定(编译期绑定):在编译期将一个方法调用和方法主体关联起来. 后期绑定(动态绑定或 ... 
- java集合(一)
- Java的URL类(二)
			转:https://www.cnblogs.com/brokencolor/p/8575440.html Java的URL类(二) 实例: Java 通过HttpURLConnection Post方 ... 
- A The Empire Age
			1月28日 Description 帝国时代3是一款十分刺激的RTS游戏.你需要控制自己的一块殖民地,发展殖民地的经济和军事,最终打败其他殖民地.小L是这个游戏的狂热爱好者.一次小L打算打AI试试身手 ... 
- html css样式子元素相对父级元素定位
			废话不多说. 父级元素 样式设置: position:relative; 子元素样式: position: absolute; 这样就可以达到子元素相对父级元素定位了. 
- JAVA005-基本数据类型变量的存储
			1.变量按类型分: 数据类型分为基本数据类型和引用数据类型 引用数据类型包括数组和类等 类定义的变量又叫对象 2.按照作用范围分为: 类级别.对象实例级.方法级.块级 方法级:局部变量 3.字符型的字 ... 
