Redis

【django-celery】异步任务管理器---celery

不羁的心 提交于 2020-10-28 14:57:14
因为superviser不支持python3,而网上关于celery后台运行的说明大都使用superviser,所以对于python3用户celery后台运行便成为了一个问题。再没废话,直接上代码。 环境说明: python3.6 django2.0.5 我们使用redis的作为celery任务队列,有一个合成包可以直接安装两者一起使用需要的安装包 直接在终端键入 pip install celery-with-redis 就可以安装需要的依赖包了 构建项目过程略过,直接开始进行celery配置 一、celery配置。 我们的项目名称为myproject,首先setting配置,添加 # celery settings # celery中间人 redis://redis服务所在的ip地址:端口/数据库号 BROKER_URL = ' redis://localhost:6379/3 ' # celery结果返回,可用于跟踪结果 CELERY_RESULT_BACKEND = ' redis://localhost:6379/3 ' # celery内容等消息的格式设置 CELERY_ACCEPT_CONTENT = [ ' application/json ' , ] CELERY_TASK_SERIALIZER = ' json ' CELERY_RESULT

两月面试被拒30次,终收5家大厂offer— JVM、线程、算法、spring、高并发

倾然丶 夕夏残阳落幕 提交于 2020-10-28 14:29:43
大家都知道程序员涨薪主要还是要靠跳槽来完成!但是我们都知道,无论是考试,还是求职,这个难度,参加人数是影响难度的一个很大因数,最近和不少出去面试的朋友闲聊,都发现,两年前面试高级开发,会 JUC 、 JVM 相关的知识点都是加分项,现在反而成了基本要求,不会这些,面试都是被吊起来打! 哎~~也不想多说什么了,说多都是泪。下面是我这两个月以来去几个厂子面试的经历总结。有兴趣的可以观摩下。 华为三面(消费者BG通用软件开发)-(差一点) 一面 9月15号 40分钟左右 四点面试结果三点半电话通知可以上线面试了 聊了聊实习期间做的项目 进程间的通讯方式 操作系统的虚拟内存 因为实习是做android的,聊了两道android的问题 两道算法: 1.判断IPV4地址的合法性 2.leetcode上原题根据身高体重对数组进行重新排序 二面 9月17号 40分钟左右 五点面试结果五点十五才开始 聊了聊实习做的项目25分钟左右 leetcode上原题:例如:3[ab2[cd]]还原为abcdcdabcdcdabcdcd 例如 2[a3[d]]还原为 adddaddd 反问问了问部门做什么的 三面 9月18号 15分钟左右 三点面试结果2点40电话通知可以面试了 十分钟介绍了下实习做的项目,有什么难点,怎么去解决,有什么收获 为什么今年华为遇到危机还是选择要加入华为(谨慎回答) 反问

linux环境下Redis的安装

寵の児 提交于 2020-10-28 13:53:41
linux环境下Redis的安装 确保Linux环境正常运行 一、下载Redis 二、 将Redis安装包上传至Linux 三、进入到相关目录执行相关命令 四、安装相关gcc依赖(redis是基于C语言的所以要安装这样的一个依赖) 五、切换到相关目录,执行安装命令 六、启动Redis 1、让Redis可以后台启动,修改配置文件 2、启动redis 3、访问Redis 确保Linux环境正常运行 个人PC,可用VMWare或VirtualBox安装虚拟机,操作系统,建议安装CentOS7.x版本 一、下载Redis 可以从Redis官网https://redis.io/下载相关包,建议下载4.x商用版本。 二、 将Redis安装包上传至Linux 可以使用xftp工具(建议 mkdir /soft ,或app放在soft(app)目录下) 三、进入到相关目录执行相关命令 tar -zxvf redis-4.0.14.tar.gz 四、安装相关gcc依赖(redis是基于C语言的所以要安装这样的一个依赖) yum -y install gcc 五、切换到相关目录,执行安装命令 cd redis-4.0.14 # 编译 make # 安装到 / usr / local / redis目录下 make PREFIX = / usr / local / redis install #

redis 主从复制

回眸只為那壹抹淺笑 提交于 2020-10-28 13:22:44
redis 主从复制 名词 建立复制 取消复制 切主 slaveof <masterip> <masterport> slaveof no one info replication config rewrite dump.rdb 复制 bin 和 redis.conf [root@localhost redis-3.2.8]# mkdir -p /usr/local/src/redis/redis-master-slave/redis-6379 [root@localhost redis-3.2.8]# cp -r bin/ /usr/local/src/redis/redis-master-slave/redis-6379/ [root@localhost redis-3.2.8]# cp redis.conf /usr/local/src/redis/redis-master-slave/redis-6379/ [root@localhost redis-master-slave]# cp -r redis-6379/ redis-6380 [root@localhost redis-master-slave]# cp -r redis-6379/ redis-6381 [root@localhost redis-master-slave]# ll total 0 drwxr

06-springboot系列:共享session

老子叫甜甜 提交于 2020-10-28 12:31:36
分布式系统中,Session 共享有很多的解决方案,其中托管到缓存中应该是最常用的方案之一 。 共享 Session Spring Session 提供了一套创建和管理 Servlet HttpSession 的方案。Spring Session 提供了集群 Session(Clustered Sessions)功能,默认采用外置的 Redis 来存储 Session 数据,以此来解决 Session 共享的问题。 引入依赖 < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-data-redis </ artifactId > </ dependency > < dependency > < groupId > org.apache.commons </ groupId > < artifactId > commons-pool2 </ artifactId > </ dependency > < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-web </ artifactId > </

高并发学习笔记

▼魔方 西西 提交于 2020-10-28 11:44:58
并发 概念 高并发 并发: 多个线程操作相同的资源,保证线程安全,合理使用资源 高并发: 服务能同时处理很多请求,提高程序性能 java 内存模型 Thread Stack 存储基本 变量:比如 int , long 等,或者对象句柄 或者方法 本地变量存在 栈上即 Thread Stack , 对象存在 堆上即Heap 一个本地变量也可能指向一个 对象引用。即引用存储在栈上, 对象是 存在堆上, 一个对象的方法和本地变量是存储在 Thread stack 上的,就算该对象存在 Heap堆上, 一个对象的成员变量 可能会随着这个对象存在 堆上,不管这个成员变量是 原始类型还是引用类型, 静态成员变量,跟随类的定义一起存在堆上, 堆上对象可以被持有该对象引用的线程访问, 一个线程可以访问一个对象,也可以访问该对象的成员变量 如果两个线程 持有 同一个对象的引用,或者调用了同一个对象的方法,线程都会持有对象的成员变量, 但是这两个线程都拥有这个对象的成员变量的 私有拷贝(所以并发时候就容易造成数据不一致) CPU与 Java Memory Model 内存模型 CPU Registers 即 CPU 寄存器 Main Memory 即 主存 同步八种操作 同步规则 总结 并发测试工具 postman , Apache Bench https://www.cnblogs.com

Redis持久化RDB和AOF实现原理

随声附和 提交于 2020-10-28 11:26:26
Redis持久化RDB和AOF 为什么Redis需要持久化? 因为Redis属于内存型数据库,数据是储存在内存当中的,当遇到不可抗力因素,比如断电,那么储存在内存中的数据就会丢失。所以为了保证数据的完整性,我们需要做持久化操作,来保证数据的完整性。 Redis中都有哪些持久化机制? Redis早就考虑到了这一点,所以在Redis中,为我们准备了两种持久化的机制,RDB和AOF。 既然Redis为我们提供了两种持久化的机制,那我们到底该选用哪个呢?其实啊,在Redis配置文件中RDB这种机制是默认开启的,而AOF机制是默认关闭的,也就是说如果你不进行配置,那么Redis就默认你使用了RDB这种持久化的机制。而当你开启AOF机制,那么Redis就会优先使用AOF持久化机制来进行数据的持久化操作。 下面我们来了解一下什么是RDB,什么又是AOF。 RDB(Redis Database): RDB是Redis用来持久化的一种机制,是把当前内存中的数据集快照写进磁盘中。 在 上篇博客 中提到过,在redis.conf配置文件中有一个叫做SNAPSHOTTING的配置模块,在里面我们可以看到有save 900 1 ,save 300 10 , save 60 10000。这里的save配置的是触发持久化操作的条件,save 900 1就是指在900秒内至少有一个key发生了改变

阿里云数据库Redis正式上线Tair持久存储系列 提供大规格命令级持久化能力的云上Redis服务

安稳与你 提交于 2020-10-28 11:22:54
2020年9月20日,阿里云云数据库Redis正式上线Tair(又称阿里云Redis企业版)持久存储系列,该系列包含两种产品形态:持久内存型和容量存储型。该系列产品是Tair系列继性能增强型和混合存储型后又一力作,其兼容原生Redis的数据结构和接口,并具备更大容量规格、抖动更低且命令级数据持久化的能力。该自研产品打破了传统Redis中的数据只能在易失性存储上进行读写的刻板印象,针对客户不同业务阶段的数据存储要求与服务成本考量,全新实现了持久性更强、成本更低的KV数据库。 >>发布会传送门 点击了解产品详情 开源Redis的三大痛点 Redis 是目前全球最主流的Key-Value 数据库产品,作为高速缓存,在缓解系统大并发高压力的场景上已经被无数开发者和企业所认可,尤其在各种行业和场景都有着非常广泛的应用,可以说Redis是应对高并发、大流量、低延迟业务场景的不二选择。然而,随着客户业务的快速发展,Redis对业务的重要性持续上升的同时系统压力和数据量也不断地攀升,这时原生开源Redis便会出现如下的一些矛盾: 1.数据可靠性与在各场景种广泛使用Redis之间的矛盾。Redis有丰富的数据结构和操作,除了作为后端数据库的前置高速缓存外,还在诸多实际涉及到数据更改的业务场景上发挥着重要的作用,这是用户往往会关注数据持久化能力。在开源Redis中

秒杀系统设计~亿级用户

蹲街弑〆低调 提交于 2020-10-28 10:47:03
个人 从事电商行业十几年,经历过大大小小的促销活动和秒杀上百次,每次做秒杀瞬时访问量会翻数十倍,甚至数百倍。 对系统架构是巨大的考验,期间也曾 经历过 系统宕机,甚至整体 雪崩 。 那么我们怎么设计秒杀系统,才能保证秒杀系统的高性能和稳定性,同时还要保证日常业务不受影响呢? 先看看秒杀场景特点。秒杀开始前几分钟,大量用户开始进入秒杀商品详情页面,很多人开始频繁刷新秒杀商品详情页,这时秒杀商品详情页访问量会猛增。秒杀开始,大量用户开始抢购,这时创建订单,扣库存压力会显著增大。实际上,秒杀场景基本都是秒杀参与人多,秒杀成功的人却寥寥无几,经常是几十万人或者更多人抢几百个商品库存。 那么我们曾经是怎么设计秒杀系统的呢?主要涉及以下几个方面: 秒杀业务流程上的考虑: 由于参加秒杀的商品售卖价格非常低,基本都是“抢到即赚到”,成功下单后却不付款的情况非常少。所以我们采用 下单减库存的方案 ,下单时扣减库存,然后再进行支付。假如真有个别订单不付款怎么办?没关系,秒杀好活动最主要的目的是吸引流量,个别订单不支付对秒杀活动本身影响不大。况且,没支付剩下的库存还可以做为普通商品继续售卖。不过要注意对机器人和自动脚本的防御,后面会详细介绍。 页面静态化: “秒杀开始前几分钟,大量用户开始进入秒杀商品详情页面,很多人开始频繁刷新秒杀商品详情页,这时秒杀商品详情页访问量会猛增” 。如果请求全部打到后端服务

爬虫-scrapy数据的持久化存储

大兔子大兔子 提交于 2020-10-28 10:46:15
今日概要 基于终端指令的持久化存储 基于管道的持久化存储 1.基于终端指令的持久化存储 保证爬虫文件的parse方法中有可迭代类型对象(通常为列表or字典)的返回,该返回值可以通过终端指令的形式写入指定格式的文件中进行持久化操作。 执行输出指定格式进行存储:将爬取到的数据写入不同格式的文件中进行存储 scrapy crawl 爬虫名称 -o xxx.json scrapy crawl 爬虫名称 -o xxx.xml scrapy crawl 爬虫名称 -o xxx.csv 2.基于管道的持久化存储 scrapy框架中已经为我们专门集成好了高效、便捷的持久化操作功能,我们直接使用即可。要想使用scrapy的持久化操作功能,我们首先来认识如下两个文件: items.py:数据结构模板文件。定义数据属性。 pipelines.py:管道文件。接收数据(items),进行持久化操作。 持久化流程: 1.爬虫文件爬取到数据后,需要将数据封装到items对象中。 2.使用yield关键字将items对象提交给pipelines管道进行持久化操作。 3.在管道文件中的process_item方法中接收爬虫文件提交过来的item对象,然后编写持久化存储的代码将item对象中存储的数据进行持久化存储 4.settings.py配置文件中开启管道 小试牛刀:将糗事百科首页中的段子和作者数据爬取下来