Redis

使用redis作为django缓存数据库

北城余情 提交于 2020-12-05 11:17:26
1、Redis的Windows版本。打开https://github.com/MSOpenTech/redis/releases下载msi安装包。该版本是64位。安装msi过程中,有个选项是否加入系统环境变量,记得勾上。一路下一步,安装。完成之后打开cmd,输入redis-server命令查看是否可以使用。不可以则重启一下即可( redis-cli shutdown ),最后执行redis-server 2、centos下安装参考https://www.cnblogs.com/zuidongfeng/p/8032505.html 3.创建django项目,修改settings.py 1 # settings.py 2 3 # redis 4 CACHES = { 5 ' default ' : { 6 ' BACKEND ' : ' django_redis.cache.RedisCache ' , 7 ' LOCATION ' : ' redis://127.0.0.1:6379 ' , 8 " OPTIONS " : { 9 " CLIENT_CLASS " : " django_redis.client.DefaultClient " , 10 " PASSWORD " : "" , 11 }, 12 }, 13 } 4、views.py 1 from django

Django缓存机制以及使用redis缓存数据库

孤者浪人 提交于 2020-12-05 10:57:34
[TOC] Django 配置缓存机制 **Django ** 是动态网站,一般来说需要实时地生成访问的网页,展示给访问者,这样,内容可以随时变化,但是从数据库读多次把所需要的数据取出来,要比从内存或者硬盘等一次读出来 付出的成本大很多。而使用缓存的话,可以将数据保存在缓存中,下次访问的时候直接从缓存中获得数据,而不用去请求后端数据库,这样服务器可以很快的响应请求,从而提高加载速度。 缓存系统工作原理 对于给定的网址,尝试从缓存中找到网址,如果页面在缓存中,直接返回缓存的页面,如果缓存中没有,一系列操作(比如查数据库)后,保存生成的页面内容到缓存系统以供下一次使用,然后返回生成的页面内容。 一般来说我们用 Django 来搭建一个网站,要用到数据库等。 from django.shortcuts import render def index(request): # 读取数据库等 并渲染到网页 # 数据库获取的结果保存到 queryset 中 return render(request, 'index.html', {'book_list':book_list}) 像这样每次访问都要读取数据库,一般的小网站没什么问题,当访问量非常大的时候,就会有很多次的数据库查询,肯定会造成访问速度变慢,服务器资源占用较多等问题。 当使用了cache后,访问情况就变化了。 from django

只能用分布式锁,也能搞定每秒上千订单的高并发优化?

我与影子孤独终老i 提交于 2020-12-05 10:00:39
今天给大家聊一个有意思的话题: 每秒上千订单场景下,如何对分布式锁的并发能力进行优化? 背景引入 首先,我们一起来看看这个问题的背景? 前段时间有个朋友在外面面试,然后有一天找我聊说:有一个国内不错的电商公司,面试官给他出了一个场景题: 假如下单时,用分布式锁来防止库存超卖,但是是每秒上千订单的高并发场景,如何对分布式锁进行高并发优化来应对这个场景? 他说他当时没答上来,因为没做过没什么思路。其实我当时听到这个面试题心里也觉得有点意思,因为如果是我来面试候选人的话,应该会给的范围更大一些。 比如让面试的同学聊一聊电商高并发秒杀场景下的库存超卖解决方案,各种方案的优缺点以及实践,进而聊到分布式锁这个话题。 因为库存超卖问题是有很多种技术解决方案的,比如悲观锁,分布式锁,乐观锁,队列串行化,Redis原子操作,等等吧。 但是既然那个面试官兄弟限定死了用分布式锁来解决库存超卖,我估计就是想问一个点:在高并发场景下如何优化分布式锁的并发性能。 我觉得,面试官提问的角度还是可以接受的,因为在实际落地生产的时候,分布式锁这个东西保证了数据的准确性,但是他天然并发能力有点弱。 刚好我之前在自己项目的其他场景下,确实是做过高并发场景下的分布式锁优化方案,因此正好是借着这个朋友的面试题,把分布式锁的高并发优化思路,给大家来聊一聊。 库存超卖现象是怎么产生的? 先来看看如果不用分布式锁

Laravel Redis Session Driver doesn't work

落花浮王杯 提交于 2020-12-05 08:32:13
问题 I'm having difficulties using the laravel 4 "redis" session driver. The problem is nothing gets actually stored. Things i've checked: I've set the driver to redis in Session-config file and cache-config file In database-config file a database config for redis is specified: I tried storing something manually with the redis-class, that did work, storing with the session class did not work // this is in my session config 'driver' => 'redis', //this is my db-config 'redis' => array( 'cluster' =>

并发环境下,先操作数据库还是先操作缓存?

拜拜、爱过 提交于 2020-12-05 06:12:30
点击上方 IT牧场 ,选择 置顶或者星标 技术干货每日送达 前言 在分布式系统中,缓存和数据库同时存在时,如果有写操作,先操作数据库还是先操作缓存呢?本文将分5种方案 展 开 阐述对比,谢谢阅读~ github地址,衷心感谢每一颗star ❝ https://github.com/whx123/JavaHome ❞ 缓存维护方案一 如果是一读(线程B)一写(线程A)操作, 「先操作缓存,再操作数据库」 。流程图如下所示: 1.线程A发起一个写操作,第一步del cache 2.线程A第二步写入新数据到DB 3.线程B发起一个读操作,cache miss缓存失效了。 4.线程B从DB获取最新数据 5.线程B执行set cache,把从DB读到的数据,更新到缓存。 「这样看,没啥问题」 。我们再看第二个流程图,如下: 1.线程A发起一个写操作,第一步del cache 2.此时线程B发起一个读操作,cache miss 3.线程B继续读DB,读出来一个老数据 4.然后老数据设置入cache 5.线程A写入DB最新的数据 OK,酱紫,就有问题了吧,老数据入到缓存了, 「每次读都是老数据啦,缓存与数据与数据库数据不一致了」 。 缓存维护方案二 上个方案是一读一写,如果是双写操作, 「先操作缓存,在操作数据库」 ,会怎么样呢? 1.线程A发起一个写操作,第一步set cache 2

SSM整合rabbitMQ时报错org.springframework.beans.factory.NoSuchBeanDefinitionException,队列消息消费不掉unacked

六眼飞鱼酱① 提交于 2020-12-05 04:02:59
报错的原因是在配置spring-rabbitmq.xml文件时的connectionFactory与redis的connectionFactory的Id命名冲突 改好之后有报错: spring报错org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.xxx] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 原因:对应要注入的实现类没有 加注解,如dao层 @Repository 如service层 @Service 解决:在相应的实现类加上注解即可 将MQProducer接口和MQProducerImpl放在Service层,并且加上@Service注解即可 另外,因为代码的问题,加到队列中的消息,一直没有消费掉,然后每次运行程序的时候,都是自动就跑到消费者队列中,进行消费(即进行商品的秒杀)

头条后台开发面经

谁说胖子不能爱 提交于 2020-12-05 02:20:31
一面(纯技术面) 队列的实现,需要注意的地方 快速排序的实现、时间复杂度分析 B树和B+树的区别、应用 HashMap的实现,扩容机制,扩容时如何保证可操作 Redis扩容机制(渐进式单线程扩容 ) Spring AOP的原理 Spring IoC的原理,如何实现,如何解决循环依赖 两线程对变量i进行加1操作,结果如何,为什么,怎么解决 CAS概念、原子类实现原理 synchronize底层实现,如何实现Lock AQS有什么特点 可见性的底层原理 JVM内存模型,为什么要这么分 本地方法栈和虚拟机栈的区别 如何查看JVM参数是否正确 TCP三次握手,如何实现 Socket编程底层如何实现 select和epoll的区别 算法:蛇形打印二叉树 二面(项目面+技术面) 项目详聊(问了很多、很细) Innodb多列索引 MySQL默认事务隔离级别,不可重复读是什么意思,如何实现可重复读 Redis服务端有20GB内存,现在要缓存200GB数据,如何处理 算法:给出[[1, 2], [3, 5], [8, 8], [15, 16], [32, 38]],求间隔 什么是堆,画了个二叉树问是否符合最小堆的结构,然后根据图叙述堆排序的详细过程。 TCP与UDP的区别,还有哪些其他的传输层协议,用来做什么的。 进程与线程的区别 ,你是怎么理解这两个概念的(快被问烂了的问题……)

阿里中间件研发面经

ぃ、小莉子 提交于 2020-12-05 02:00:18
阿里中间件研发面经 研发工程师(Java) 我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer。这是我的 面经,在这里分享给大家。 一面: 1 自我介绍 2 项目中做了什么,难点呢。 3 Java的线程池说一下,各个参数的作用,如何进行的。 4 Redis讲一下 5 分布式系统的全局id如何实现。用zookeeper如何实现的呢,机器号+时间戳即可。 6 分布式锁的方案,redis和zookeeper那个好,如果是集群部署,高并发情况下哪个性能更好。 7 kafka了解么,了解哪些消息队列。 8 想做业务还是研究。 9 然后出了一道题,linux的访问权限是rwx格式的。使用一个类支持访问权限的增删改查,并且注意使用的数据格式以及方法效率,规范。给了一个多小时写题。 耗时将近30分钟。 二面: 1 介绍你做的项目和其中的难点。 2 上次面试官问的问题,反射的作用是什么。 3 数据仓库,多线程和并发工具等。 4 私有云,docker和k8s等。 5 了解哪些中间件,dubbo,rocketmq,mycat等。 6 dubbo中的rpc如何实现。 7 自己实现rpc应该怎么做 9 dubbo的服务注册与发现。 10 听说我是非科班,于是问了些排序算法 耗时将近30分钟。 三面: 三面不是面试,而是笔试,耗时三个小时,考的是Java核心的基础

今日头条研发面经

别等时光非礼了梦想. 提交于 2020-12-05 02:00:01
今日头条研发面经 今日头条上海 后台开发工程师 今日头条 后端研发工程师 找牛客大佬要了白金码,跳过死亡笔试,直接视频面,从3点开始,断断续续到晚上8点结束。 每个面试官给我的感觉都是怎么这么高冷啊。 1一面 一面: 1 写一个题,找一个无序数组的中位数 2 写了个快排,然后让我找到无序数组第k大的一个数,我说先排序再找,实际上可以用快排的partition函数。 3 快排的时间复杂度,最坏情况呢,最好情况呢,堆排序的时间复杂度呢,建堆的复杂度是多少,nlgn。 4 操作系统了解么,Linux和windows 5 说说Linux的磁盘管理,一脸懵逼 6 Linux有哪些进程通信方式,五大件 7 Linux的共享内存如何实现,大概说了一下。 8 共享内存实现的具体步骤,我说没用过 9 socket网络编程,说一下TCP的三次握手和四次挥手,中间网络不好,面试官都没听清楚,很尴尬 10 跳过网络,问了项目的一些东西 11 问我如何把docker讲的很清楚,我从物理机,虚拟机到容器具体实现稍微说了下。 12 问我cgroup在linux的具体实现,不会。 13 多线程用过哪些,chm和countdownlatch在实习用过 14 不得不吐槽下今天牛客的视频网速,不知道啥原因卡的一比,明明下载网速很正常啊,牛客视频每秒才20k。。疯狂掉线搞得很蛋疼。 二面: 1 自我介绍 2

php解决高并发问题

谁都会走 提交于 2020-12-05 01:42:24
我们通常衡量一个Web系统的吞吐率的指标是QPS(Query Per Second,每秒处理请求数),解决每秒数万次的高并发场景,这个指标非常关键。举个例子,我们假设处理一个业务请求平均响应时间为100ms,同时,系统内有20台Apache的Web服务器,配置MaxClients为500个(表示Apache的最大连接数目)。 那么,我们的Web系统的理论峰值QPS为(理想化的计算方式): 20*500/0.1 = 100000 (10万QPS) 咦?我们的系统似乎很强大,1秒钟可以处理完10万的请求,5w/s的秒杀似乎是“纸老虎”哈。实际情况,当然没有这么理想。在高并发的实际场景下,机器都处于高负载的状态,在这个时候平均响应时间会被大大增加。 普通的一个p4的服务器每天最多能支持大约10万左右的IP,如果访问量超过10W那么需要专用的服务器才能解决,如果硬件不给力 软件怎么优化都是于事无补的。主要影响服务器的速度 有:网络-硬盘读写速度-内存大小-cpu处理速度。 就Web服务器而言,Apache打开了越多的连接进程,CPU需要处理的上下文切换也越多,额外增加了CPU的消耗,然后就直接导致平均响应时间增加。因此上述的MaxClient数目,要根据CPU、内存等硬件因素综合考虑,绝对不是越多越好。可以通过Apache自带的abench来测试一下,取一个合适的值。然后