精华内容
下载资源
问答
  • 一位同学在群里发问,这个报错什么鬼 我看到Access-Control-Allow-Headers的第一反应,"跨域" 仔细一看,不对昂,跨域一般会再错误信息里提示请求源的路径啊,仔细一看,是request header,我经验太少啊,看不懂了 ...

    一位同学在群里发问,这个报错什么鬼

    我看到Access-Control-Allow-Headers的第一反应,"跨域"

    仔细一看,不对昂,跨域一般会再错误信息里提示请求源的路径啊,仔细一看,是request header,我经验太少啊,看不懂了

    然后我让他截图NetWork的图,是这样的,重点已圈出(红框

    结果出来了,后端跨域是解决了,但它的Allow允许访问的请求方式只有post,而客户端只是options(探测性请求)一下,真正传的值在headers里面(下面的红框可以看出),所以服务端必须允许HEAD访问

    这种问题,如果不是因为Request headers里面没有加信息,

    这些都是没有问题的

    展开全文
  • Web系统与后台Server的socket接口测试 2010年06月08日 下午 2:09 名词解释: 【Web系统】:本文中的web系统指的是基于B/S结构的事务处理系统。Web系统一般分为前端ui和后端业务处理模块两部分。 ...
    Web系统与后台Server的socket接口测试
    2010年06月08日 下午 2:09

    名词解释:

    【Web系统】:本文中的web系统指的是基于B/S结构的事务处理系统。Web系统一般分为前端ui和后端业务处理模块两部分。
    【后台Server】:本文中的后台server泛指与web系统的后端业务处理模块进行数据交互的模块。

    1 web与server接口背景描述

    web系统的后台模块数据交互,通常有多种方式:数据库、文件、socket接口、web service等方式。本文主要讨论的是web系统与server模块的socket的接口的类型、测试关注点和常用工具。

    web与server模块的socket接口有简单有复杂,简单的可能只有一个id的查询,复杂的可能需要批量的增删改查。它们有共有的功能,也有各自独立的功能,下文将就web与server接口中遇到的不同问题,从web测试角度进行分析。

    需要说明的是,本文的主要目的是从大的方面讲述web与server接口测试需要检查的点和可能存在问题的地方,其中任何一个问题都可以放大为一个专题,所以本文限于篇幅不做过细的剖析。

    2 接口测试关注点

    在一个项目中,QA会从需求、设计、开发、测试、上线等阶段一直跟进。因此对于web与server的接口测试并不是局限在测试阶段,而很多的问题在需求和设计阶段就可以发现和解决,事实上从需求和设计阶段就发现并解决的问题,比在测试阶段发现之后再解决的成本要小很多。所以本文中叙述的测试点,并非单指测试阶段,QA在参加需求评审和设计评审的时候就需要想到可能出现的问题和处理方法。

    本节将从web与server之间交互的环境稳定性、连接建立及关闭、数据发送及接收等方面介绍接口测试的关注点。

    2.1 server服务容灾

    2.1.1 单点问题

    所谓单点,是指这个一旦一台服务器出现问题,将导致整个服务都受到影响。

    提供服务的server模块,根据实现方式不同,有的是分布式服务(多台服务器提供不同的数据),有的是互备服务(多台服务器提供相同的数据)。无论哪种情况,都需要在评审、测试时注意服务是不是存在单点问题。

    这里说的单点问题包括server和web两个方面:

    1、server服务本身是单点的,一台服务器出现问题,整个服务都不可用。

    【例1】某web系统的用户信息通过socket接口方式存储在某server模块中,server模块的接口支持用户信息的增删改查。此时一旦 server模块发生问题,那么web的功能就会受到影响。此时需要建议RD考虑避免单点或减少单点影响的方法。

    常用方法:(1)server模块有多个,由web端控制,每次的写操作都针对多个server分别执行,保证多个server模块数据一致;(2)为 server准备备机,在主server与备机server之间设定数据同步方式,一旦主server发生问题即切换到备机;(3)主server下挂接从server,从server的数据同步自主server,主server接收写操作,从server接收查询操作,此方法既能够缓解压力,也能够有效缓解单点问题,一旦主server异常,可以把某个从server替换主server。

    2、web端连接server服务的方法是单点的,一旦一台服务器出现问题,web端无法自动屏蔽这台服务器,导致web服务受到影响。

    【例2】某server模块提供纯查询服务,web系统通过socket接口方式向此server查询数据。Server模块为缓解压力及避免单点问题,同时提供了一模一样的3套服务供web系统使用。但web系统查询3个server时,是按照完全随机的方式查询的。如果3台server中有一个存在问题,那么web系统落在此server上的查询请求全部会失败。此时需要在web系统中考虑容错方法。

    常用方法:(1)短连接:发送请求时重试n次无法连接某server,则从server列表中找另外一个server建立连接;(2)长连接:web系统定时发送心跳请求检查与所有server的连接关系;(3)在web与server之间挂接BVS之类的中间转发请求模块,如果server发生问题,只需利用BVS的自动检查连接状态功能或者利用BVS能快速修改配置的特点,在不需web系统调整的情况下,检查服务受影响时间。

    【测试检查点:是否单点;避免或缓解单点问题的方法是否可保证数据部丢失且切换快捷。】

    2.1.2 域名还是IP

    线上部署的web系统,访问server模块一般是从内网访问的。在配置访问地址时,有时配置成内网域名,有的配置成内网IP地址。

    配置为内网域名:
    【优点】:server服务器的IP调整不会对web发向server的请求造成影响,web不需修改IP地址;
    【缺点】:(1)web对server的每次连接建立,都需要经过内网dns的解析,对于实时性和性能要求高的业务功能来说,这样的请求方式效率不如直接配置IP高;(2)一旦内网dns出现故障或者压力过大,会造成域名解析失败,无法建立连接。(实际上,线上出现这种情况的概率还是不小的。)

    【例3】某web系统把连接server的地址设置为域名:web-socket.test.com,在实际测试中发现web发出的请求server有时能接收到有时接收不到。原因是此域名在内网dns解析时有时会超时或解析失败。后修改为IP地址此问题未再出现。

    【测试检查点:配置的是域名还是IP,域名是否正确,IP是否正确,上线后域名解析是否存在失败较大的失败风险。】

    2.1.3 机房因素

    网通和电信用户访问系统,会落在不同的机房,我们的web服务和server服务也是分别在不同的机房部署。所以,在程序实现、在线上部署时,为了保证访问速度,最好是配置同机房的web系统访问同机房的server服务。

    【例4】某server模块部署在A机房,而访问此server的web系统在A机房和B机房都有部署。上线后发现在业务高峰期,在B机房的web系统偶尔会出现访问server失败或超时,原因是B机房的web系统访问A机房的server跨机房情况下,延迟比同机房要大一些,在web系统配置相同的超时时间情况下,跨机房请求出现超时的概率就大一些。修复方式:(1)修改跨机房的web系统或server模块配置项,把超时时间调大(不推荐);(2)尽量保证同机房内访问server。

    【测试检查点:是否同机房web与server相连;如果不是,是否会存在性能问题。】

    2.2 连接建立及关闭

    Web系统与server服务建立连接时,需要考虑server服务器选择、建立长连接/短连接选择、连接超时时间设定、建立的连接数、是否使用连接池等各种情况,下面就这些情况的测试考虑分别描述。

    2.2.1 Server服务器选择

    一般情况下,提供服务的server程序都会提供多台服务器(只提供一台服务器的情况也就不存在选择不选择的问题了)。Web系统如何在多台服务器中选择连接哪个服务呢?这要分情况来看。

    第一,如果server服务是分布式的,那么web系统选择服务器是根据与server模块的功能接口来确定的。常见的选择方式有:取模、哈希等。

    这里需要注意的是,如果分布式的多台server服务器中有部分服务器出现故障,web服务用怎样的逻辑保证web服务不受影响。根据不同的服务类型,有不同的处理办法。有的情况下web系统抛出异常,有的情况下web系统自动识别无法连接的服务器,对可用服务器进行hash,只与可用服务器建立连接。

    【测试检查点:取模、哈希结果是否正确,是否能够把请求发送到正确的服务器上;算法结果是否使得请求均匀落在多台server服务器上;如果一台服务器出现错误,容错机制是否满足需求。】

    第二,如果server服务是互备式的,那么出于容错和均匀请求考虑,web系统常用如下策略选择server服务器:首先在多台server服务器中随机选择一台建立连接,如果被选中的服务器无法建立连接,则在剩余的服务器中再随机选择一台,如此重复多次。直到在重复次数内选到一台可用server服务器,或者没有选中任何一台可用server服务器。当然,在每次连接过程中都可以控制尝试多次重连。

    【测试检查点:上述随机轮询机制是否正确;发送多次请求,是否均匀发送到多台server服务器上。】

    2.2.2 长连接/短连接


    Web、server之间可以建立“长-长”、“长-短”、“短-长”、“短-短”等四种连接,长短连接各有利弊,在测试中需要关注的是,web与 server的连接是上述四种中的哪种或者哪几种,尤其需要注意的是,这种连接方式是否满足web系统的需要。关于长短连接不同的建立、中断状态,非只言片语可以概括,另撰文叙述,本文中不做讨论。

    【例5】凤巢web系统与报表server模块doris之间有一类功能交互:web系统单线程串行向doris请求大数据量数据。在这种情况下,web 与server之间用长连接就比短连接要更高效,单线程顺序发请求,省去了连接重复建立和关闭的过程。
    【例5】某Server模块建立的连接始终都是长连接,只要主动发起连接的web系统不断开连接,此server模块就不会断开连接。某web系统与此 server模块的数据交互有两类功能:(1)web系统并访问server模块获取少量数据;(2)web系统单线程不间断串行发请求server模块获取大量数据。对于这两种交互场景,第一种情况下web系统与后台server模块建立短连接,获取数据之后关闭连接,下次请求再重新建立连接;第二种情况下web系统与后台server模块建立长连接,不主动关闭连接,省去了不必要的多次建立连接和关闭连接的时间。

    【测试检查点:web与server建立的连接是哪种连接方式;是否符合业务需求、是否符合web系统需求。】

    2.2.3 连接超时时间设定

    连接超时时间分为:建立连接超时时间、连接空闲超时时间。

    建立连接的超时时间是指发起建立连接的请求时,未得到对方响应而中断请求的超时时间。

    【测试检查点:建立连接超时时间是否生效,超时时间设置的时长是否合理。】

    连接空闲超时时间是指当一个长连接长时间空闲时,连接被关闭回收的时间。很多server服务都限定了长连接的空闲超时时间,包括mysql的长连接也是如此。

    【例6】某web系统与mysql数据库之间是长连接,由于web系统访问量小,web系统与mysql之间的连接有时会有很长的空闲时间,该空闲时间超过了mysql配置的空闲超时时间,mysql就主动关闭该连接。当连接关闭之后下一次web系统有访问需要向mysql发请求时,由于长连接已经中断,而web系统容错不足,导致在连接再次建立起来之前的请求都会失败。所以在这种情况下需要注意,或者注意超时时间设置,或者注意发心跳请求以维持连接。

    【测试检查点:web端和server端的长连接空闲超时时间是否生效;超时时间设置的时长是否合理;连接超时被关闭后,再有请求到来是是否能够正常建立连接。】

    2.2.4 建立的连接数

    Web与server建立socket连接时,有的系统用连接池来管理连接、有的系统不用连接池。对于使用连接池的情况,需要设定初始化连接数、最大连接数、最大空闲连接数等参数,在测试中需要关注初始化的连接数是否成功建立,上述三个连接数是否合理。对于不用连接池的情况,也需要注意创建的连接个数是否正确。

    另外,还需要考虑上线后多台web服务器连接多台server服务器的情况下,会不会造成server服务支持的连接数超过限制,甚至web服务器和 server服务器机器本身的socket连接不够用。在测试环境中模拟、评估后,如有必要,需要修改线上服务的连接数,或者服务器支持的socket连接数。

    【例7】某web系统把用户登录信息存储在server memcache中,web系统与memcache之间是短连接。由于用户在web系统中的所有操作都需要访问memcache以验证登录状态,所以导致当多台web并发访问用户很大时,会导致memcache所在的服务器上由于连接数过多而拒绝了很多web发起的请求。经过分析,发现访问高峰期web系统与memcache上建立的连接,超过了memcache服务器默认1024个最大连接数(即单进程允许打开的最大文件句柄数)。后通过两种方式解决此问题:(1)memcache所在服务器的最大连接数调大,由1024调整为10240;(2)web系统把每次从memcache中得到的结果在本地 web系统中缓存5秒,以减少访问memcache的并发量。

    【测试检查点:各个连接数是否与设置相同;特殊情况下设置最大连接数为1时,要特别注意是否会出现已有连接未完全关闭导致出现无法新建连接的情况;server服务支持的连接数是否不足;web服务器和server服务器支持的socket连接数是否过小。】

    2.2.5 是否使用连接池

    对于使用了连接池的web系统,测试检查点与上小节相同,主要是连接的个数和连接池对各状态的连接的管理。

    对于未使用连接池的web系统,测试检查点就要多一些,要关注到连接的建立、状态、个数、关闭,以及连接不足时的新建逻辑等。

    2.2.6 关闭连接

    建立连接就对应着关闭连接,在实际的项目中,有的是由连接池来管理,有的是程序直接关闭。需要在详设时就明确连接关闭方法,一般情况下说来,用连接池管理效率会更高一些。

    【测试检查点】:双方连接是否正常关闭;在大并发情况下,是否会造成连接数过多报错的情况。

    附上关闭连接的交互过程,以供参考:




    2.3 发送数据

    建立了连接之后,下一步就是web端发送请求数据了。发送的请求数据根据不同的功能,有不同的数据格式,以下列出发送请求的主要测试点:

         发出的请求格式是否正确。黑盒角度:直接看对端日志和返回结果;白盒角度:截取发出的请求,检查结构体中数据填充是否正确

         发出的请求结构体如果不是定长,需要以设计的最大长度作为边界值进行测试。

         从功能角度,填充结构体中的不同块的内容(也就是覆盖到不同的业务功能逻辑),检查是否能够正常发出,对方是否能够正常处理。

    2.4 接收数据

    发送请求之后,web端必然会接收到返回结果。返回的结果数据根据不同的功能,也是有不同的数据格式,一下列出通用的主要测试点:

         检查返回结果是否正确。黑盒角度:检查web端是否正常解析,有无报错;白盒角度:截取返回的数据,检查结构体中数据填充是否正确

         如果返回的结构体不是定长,需要以设计的最大长度最为边界值进行测试

         如果返回的结果体中的循环数据有很多,需要检查与发送出去的数据是否一一对应。

    【例9】某web系统向某后台server模块批量发送100个词的合法性验证请求,server模块返回结果中针对每个词都有对应的检查结果标识,在测试中需要检查该server模块返回的是否是100个词,100个词返回结果是否与发出的待检查数据对应等。

         从功能角度,设计覆盖到不同业务功能逻辑的数据,发送并接收解析,从web端和server端分别检查处理是否正常。

         在并发情况下或者在传输大的数据包情况下,检查是否会出现收包未收完就关闭了连接的情况。这种情况在测试环境不太容易测到,但在java程序中却比较常见,需要做的是防患于未然,在RD设计和开发时,提醒web的RD注意接收数据流的读取方式,一定要循环读取到最后一个字节才关闭连接。

    【例10】某web系统向某server发数据查询请求,在测试过程中发现web系统偶尔会出现查询请求报错。Web系统报错提示server返回数据不完整,而server的提示比较奇怪,有时会提示数据传输完成,有时提示连接被意外关闭数据传输失败。经过使用截包工具追查,找到原因是web系统在关闭连接时没有判断server返回的数据是否接收完成,所以当server返回数据量比较大时,web系统会接收到不完整数据导致报错。

    3 常用工具

    3.1 桩

    在测试过程中,有时候为了方便构造数据,或者在server未就绪的时候web就可以进行测试,需要以桩模块的形式设计一个桩模块,用于模拟server 的功能,以特定的结构体返回数据给web。

    桩模块在测试接口非常有用,常见应用场景:(1)web系统测试开始时,server模块尚未达到测试条件,web系统与server模块的测试无法进行下去,可以使用桩模块进行测试;(2)web系统与server模块的测试数据难于构造,尤其是边界值、特殊数据等,可以通过桩模块构造数据方便测试;(3)web系统测试需要一套长期稳定的server模块用于测试(此测试非该web系统与server模块的接口测试),但server模块无法提供这样的环境,可以通过桩模块来保证web系统正常功能测试进行。

    3.2 截包工具

    在测试过程中,有时候为了追查问题,或者需要白盒角度测试结构体内容填充是否正确,需要把web与server之间的交互数据都截取下来进行分析。截包工具截取到的数据,可以用于功能正确性验证、bug分析、自动化结果验证等。

    截包工具的原理比较简单,所以在实际测试中,也可以用自己熟悉的变成语言字节编写一个类似的工具,并结合数据解析或者自动化验证的功能,可以加大测试的深度。

    4 总结

    上文介绍了从web测试角度测试web系统与server模块的接口在测试各阶段需要关注的点,需要说明的是,本文中介绍的测试关注点是根据笔者实际项目测试实践总结的较为通用的检查点,并非web系统与server模块接口测试的全部检查点。在实际测试中,除了通用的检查点之外,更重要的是接口功能检查,因为这才是接口的核心价值所在。

    总而言之,Web系统与server的socket交互方式广泛存在于web系统中,为了保障web系统服务稳定,需要从项目设计阶段就开始关注接口的各测试点,以使得问题更早暴露更早解决,同时在测试设计和测试执行阶段需要多方面测试接口,最终交付接口交互稳定高效的web系统。

    (全文完)
    作者:末末


    展开全文
  •  5.2 注释绑定的主机地址(不改, 客户端拒绝连接) :   #bind 127.0.0.1   5.3 关闭保护模式(不改, 客户端拒绝连接) :  protected-mode no    6.启动服务  启动服务: redis-server /...

    本自述文件只是一个快速*快速入门*文档。您可以在[redis.io](https://redis.io)找到更详细的文档。

    =============================================================

    常用命令:

     

    一.安装.

    1. 下载: 

          https://redis.io/download

    2. 下载文件& 解压

         tar -xzvf  redis-5.0.3.tar.gz

     

     

    3.编译:

         cd redis-5.0.3

         make 

    4.测试

         make test

    5.修改配置

         vi redis-5.0.3/redis.conf     

         5.1 修改参数 (后台启动) :    

                    daemonize yes   

         5.2 注释绑定的主机地址(不改, 客户端拒绝连接) :  

                     #bind 127.0.0.1

         5.3 关闭保护模式(不改, 客户端拒绝连接) :

                   protected-mode no

     

     6.启动服务

        启动服务:    redis-server  /data/redis-5.0.3/redis.conf

      停止服务:  redis-cli -h 127.0.0.1 -p 6379 shutdown

    7.配置环境变量:

             vi /etc/profile
             
            export REDIS_HOME=/data/redis-5.0.3
            export PATH=$PATH:$REDIS_HOME/src

            source /etc/profile

     

     

    8.连接

          本地连接:  redis-cli

          远程连接:  $ redis-cli -h host -p port -a password

          避免中文乱码:    redis-cli --raw

    9. 测试.

            [root@hadoop006 src]# ./redis-cli
            127.0.0.1:6379> 
            127.0.0.1:6379> 
            127.0.0.1:6379> set runoobkey redis
            OK
            127.0.0.1:6379> get runoobkey
            "redis"
            127.0.0.1:6379> 
            127.0.0.1:6379> 
            127.0.0.1:6379> del runoobkey
            (integer) 1
            127.0.0.1:6379> 
            127.0.0.1:6379> get runoobkey
            (nil)
            127.0.0.1:6379> 
            127.0.0.1:6379> 
            127.0.0.1:6379> 

     

    10. 常用命令

     

    flushall 清空所有数据库

    flushdb 清空当前数据库

     

    关闭:

          redis-cli    ==>   shutdown  

     

    =============================================================

    什么是Redis?

     

    Redis通常被称为*数据结构*服务器。这意味着Redis通过一组命令提供对可变数据结构的访问,这些命令使用带有TCP套接字和简单协议的* server-client *模型发送。因此,不同的进程可以以共享方式查询和修改相同的数据结构。

     

    Redis中实现的数据结构有一些特殊属性:

     

    * Redis关心将它们存储在磁盘上,即使它们总是被提供并修改到服务器内存中。这意味着Redis速度很快,但这也是非易失性的。
    *数据结构的实现强调内存效率,因此与使用高级编程语言建模的相同数据结构相比,Redis内部的数据结构可能会使用更少的内存。


    * Redis提供了许多在数据库中很容易找到的功能,如复制,可调节的持久性,群集,高可用性。

    另一个很好的例子是将Redis视为memcached的更复杂版本,其中操作不仅仅是SET和GET,而是用于处理复杂数据类型(如Lists,Sets,有序数据结构等)的操作。

    如果您想了解更多信息,请参阅选定的起点列表:

    * Redis数据类型简介。http://redis.io/topics/data-types-intro 
    *直接在浏览器中试用Redis。http://try.redis.io 
    * Redis命令的完整列表。http://redis.io/commands 
    * Redis官方文档中还有更多内容。http://redis.io/documentation

     

    建立Redis 

     

    Redis可以在Linux,OSX,OpenBSD,NetBSD,FreeBSD上编译和使用。
    我们支持大端和小端架构,以及32位
    和64位系统。

    它可以在Solaris派生系统(例如SmartOS)上编译,但是我们
    对这个平台的支持是*尽力而为*并且不保证Redis 
    在Linux,OSX和\ * BSD中工作得很好。

    它很简单:

        % make

    您可以使用以下命令运行32位Redis二进制文件:

        % make 32bit

    在构建Redis之后,最好使用以下方法对其进行测试:

        % make test

     

    修复依赖项或缓存构建选项的构建问题

     

    Redis有一些依赖项,它们包含在`deps`目录中。
    即使依赖项
    源代码中的某些内容发生更改,`make`也不会自动重建依赖项。

    当您使用`git pull`更新源代码或者
    以任何其他方式修改依赖项树中的代码时,请确保使用以下
    命令以便真正清理所有内容并从头开始重建:

        make distclean

     

    这将清理:jemalloc,lua,hiredis,linenoise。

    此外,如果您强制某些构建选项(如32位目标,没有C编译器
    优化(用于调试目的))和其他类似的构建时选项,
    那么这些选项将无限期地缓存,直到您发出`make distclean
    命令。

     

    修复构建32位二进制文​​件的问题
    ---------

    如果在使用32位目标构建Redis之后需要
    使用64位目标重建它,或者
    反过来,则需要在Redis发行版的根目录中执行`make distclean`。

    如果在尝试构建Redis的32位二进制文​​件时出现构建错误,请尝试
    以下步骤:

    *安装包 libc6-dev-i386 (also try g++-multilib).
    *尝试使用以下命令行而不是`make 32bit`:
     
    `make CFLAGS="-m32 -march=native" LDFLAGS="-m32"`

     

    分配器
    ---------

    在构建Redis时选择非默认内存分配器是通过设置
    `MALLOC`环境变量来完成的。
    默认情况下,Redis是针对libc malloc 编译和链接的,除了jemalloc是Linux 
    系统上的默认设置。选择此默认值是因为jemalloc已证明
    比libc malloc 具有更少的碎片问题。

    要强制编译libc malloc,请使用:

         % make MALLOC=libc

    要在Mac OS X系统上针对jemalloc进行编译,请使用:

        % make MALLOC=jemalloc

     

    详细构建
    -------------

    默认情况下,Redis将使用用户友好的彩色输出进行构建。
    如果要查看更详细的输出,请使用以下命令:

        % make V=1

     

    运行Redis 
    -------------

    要使用默认配置运行Redis,只需键入:

     

        % cd src
        % ./redis-server

     

    如果要提供redis.conf,则必须使用其他
    参数(配置文件的路径)运行它:

        % cd src
       % ./redis-server /path/to/redis.conf

    可以通过
    使用命令行直接将参数作为选项传递来更改Redis配置。例子:

        % ./redis-server --port 9999 --replicaof 127.0.0.1 6379
        % ./redis-server /etc/redis/6379.conf --loglevel debug

    使用命令
    行支持redis.conf中的所有选项作为选项,名称完全相同。

     

    和Redis一起Playing

    您可以使用redis-cli与Redis一起Playing 。启动redis-server实例,
    然后在另一个终端中尝试以下操作:

            % cd src
            % ./redis-cli
                redis> ping
                PONG
                redis> set foo bar
                OK
                redis> get foo
                "bar"
                redis> incr mycounter
                (integer) 1
                redis> incr mycounter
                (integer) 2
                redis>

     

     

    您可以在http://redis.io/commands找到所有可用命令的列表。

     

    安装Redis 

     

    要将Redis二进制文件安装到  /usr/local/bin 中,只需使用:

        % make install

    如果您想安装到其他位置,可以使用  `make PREFIX=/some/other/directory install`  

    make install只会在系统中安装二进制文件,但不会配置初始化脚本和配置文件

    如果您只想与Redis一起玩,则不需要这样做,但如果您正在
    为生产系统安装它,我们有一个脚本
    为Ubuntu和Debian系统执行此操作:

        % cd utils 
       
    % ./install_server.sh

    该脚本将向您提出几个问题,并将设置您
    正确运行Redis作为后台守护程序所需的一切,该守护程序将在
    系统重新启动时重新启动。

     

    你将会使用脚本 启动&停止Redis  : 

    `/etc/init.d/redis_<portnumber>`,

    例如:  `/etc/init.d/redis_6379`.



    源代码布局
     

    Redis根目录只包含这个README,Makefile 
    调用`src`目录中的实际Makefile以及
    Redis和Sentinel 的示例配置。您可以找到一些
    用于执行Redis,Redis Cluster和
    Redis Sentinel单元测试的shell 脚本,这些测试在`tests` 
    目录中实现。

    根目录中有以下重要目录:

    *`src`:包含Redis实现,用C编写. 
    *`tests`编写: 包含单元测试, 使用T cl 实现。
    *`deps`:包含Redis使用的库。编译Redis所需的一切都在这个目录中; 你的系统只需要提供`libc`,POSIX兼容接口和C编译器。值得注意的是,“deps”包含了一个`jemalloc`的副本,它是Linux下Redis的默认分配器。请注意,在`deps`下也有从Redis项目开始的东西,但主存储库不是`antirez/redis`。这个规则的一个例外是
    `deps/geohash-int`,它是Redis使用的低级geocoding library :它源自一个不同的项目,但此时它分支太多,以至于它被直接开发为一个独立的实体。 Redis存储库。

    还有一些目录,但它们对我们的目标不是很重要
    。我们将主要关注`src`,其中包含Redis实现,
    探索每个文件中的内容。文件被
    公开的顺序是遵循的逻辑顺序,以便逐步地公开不同
    的复杂层。

    注意:最近Redis被重构了很多。函数名称和文件
    名已更改,因此您可能会发现此文档
    更密切地反映了`unstable`分支。例如在Redis 3.0中,`server.c` 
    和`server.h`文件被命名为`redis.c`和`redis.h`。但总体
    结构是一样的。请记住,所有新开发和pull 
    请求都应该针对`unstable`分支执行。

    server.h 
    ---

    理解程序如何工作的最简单方法是理解
    它使用的数据结构。所以我们将从
    Redis 的主头文件开始,它是`server.h`。

    所有服务器配置和一般所有共享状态都
    在名为`server`的全局结构中定义,类型为`struct redisServer`。
    该结构中的一些重要领域是:

    *`server.db`是Redis数据库的数组,其中存储了数据。
    *`server.commands`是命令表。
    *`server.clients`是连接到服务器的客户端的链接列表。
    *`server.master`是一个特殊的客户端,如果实例是副本,则是主服务器。

    还有很多其他领域。大多数字段都直接在
    结构定义中注释。

     

    后面的东西,目前参考一下,看看.

    详情请参看官方API:  https://redis.io

     

     

     

     

     

    展开全文
  • 在今天的项目中,后台提供接口,我负责增加和修改的,修改时报400错误,增加时一直显示增加失败。 解决: 第一步:确定接口地址是否正确。 正确 第二步:百度问题产生的原因,并未找到解决方案。 知道了400错误可能...

    在今天的项目中,后台提供接口,我负责增加和修改的,修改时报400错误,增加时一直显示增加失败。
    解决:
    第一步:确定接口地址是否正确。 正确
    第二步:百度问题产生的原因,并未找到解决方案。 知道了400错误可能的原因:1.http版本不一致;2.报文过长;3.报文内容类型与报文内容不匹配(content-type:form与json)。
    第三步:根据400错误可能的原因来进行逐一的排查,首先,http版本不一致,经过查看http版本一致;报文过长,经过查看报文长度不是过长;前两个原因排除后,就只剩下报文内容类型与报文内容不匹配了。
    第四步:解决报文内容类型与报文内容不匹配:
    首先在postman软件里输入接口的地址,send后找到headers里的Content-Type的value属性值。
    在这里插入图片描述
    然后在ajax中,加入contentType: ‘application/json;charset=UTF-8’,以及data后添加JSON.stringify,这样报文内容类型与报文内容匹配了。
    在这里插入图片描述
    第五步:解决了修改时报400错误,数据能正常修改了。然后我根据这个原理,同样在增加页面的ajax中,加入contentType: ‘application/json;charset=UTF-8’,以及data后添加JSON.stringify,成功解决问题。

    展开全文
  • Vue项目不能使用localhost:8xx0进入项目,但是将localhost替换为127.0.0.1却可以进入。 ????解决办法: ????进入文件 C:\Windows\System32\drivers\etc\hosts ????用记事本打开 hosts 文件进行编辑,看看...# ::1
  • 在配置后台项目环境虚拟主机时,出现了 网址拒绝了我们的连接请求,net::ERR_CONNECTION_REFUSED这样的错误。但是配置的localhost:8080是可以正常访问的,hosts文件也已经修改。于是虚心(作死)的开始了调试,但是最...
  • ECS_8080端口连接拒绝问题排查

    千次阅读 2017-06-01 13:40:56
    第六列:Iface,该路由表项对应的输出接口 从截图可以看出,目标是127的数据包,网关地址仍然是127,这就印证了127是回送(loopback)地址。 解决方案: 修改web容器配置,把web应用绑定在ecs主...
  • 安装 WICD 后 开启 出现 无法连接到 wicd 的 D-Bus 接口。错误信息请查看 wicd 日志。sudo service wicd stoprm /etc/resolv.confrm /var/lib/wicd/resolv.conf.origln -s /run/resolvconf/resolv.conf /var/lib/...
  • IOS后台运行

    万次阅读 2014-11-28 15:34:13
    IOS的后台运行程序
  • 用户ECS网络设置 上图是用户ECS的网络示意图: ecs处于vpc网络下 ecs加入了一个安全组,该安全组出入方向均开放...8080端口无法连接 排查过程 首先确认安全组规则中,的确开放了入和出的8080端口,说明...
  • 最近客户端接口
  • 微信与朋友圈后台架构

    万次阅读 多人点赞 2016-03-30 21:47:28
    微信朋友圈技术之道:三个人的后台团队与每日十亿的发布量视屏讲解概述截止到2015年7月,微信每月活跃用户约5.49亿,朋友圈每天的发表量(包括赞和评论)超过10亿,浏览量超过100亿。得益于4G网络的发展,以上数据仍...
  • python:web后台框架简单实现

    万次阅读 多人点赞 2019-09-04 10:05:50
    python:web后台框架 主要介绍了用python编写web后台框架的方法以及注意事项
  • IOS后台机制分析

    千次阅读 2016-06-12 09:05:12
    转载:... 本文总结了IOS7中的几个后台处理方式,特酷吧摘录部分如下。... IOS 7中,实际上APP拥有四种后台模式,无论是哪一种后台机制,均需要利用苹果给予的相应后台接口实现。IOS7系统中,
  • IOS的后台任务

    万次阅读 2014-04-01 17:11:54
    翻译自:... (代码部分若乱码,请移步原链接拷贝) ...app在内存中,除非用户再次返回到app,否则该app暂停运行。都是这种情况吗?...当然不是,在一些例外的情况下,app仍然可以在后台保持运行。这篇文
  • 前端后台常见问题总结

    千次阅读 2016-11-10 19:28:39
    1.字符乱码的问题(前后台): 在浏览器中查看格式是否是unicode编码 在jsp文件中查看头是否是utf-8 看Eclipse的开发环境是不是utf-8 右键–>properties–>utf-8 看tomcat服务器Server文件中server.xml添加...
  • 腾讯后台面试

    千次阅读 2016-12-02 13:12:53
    腾讯后台开发面试题及答案 时间 2013-09-24 22:28:03 CSDN博客 原文  http://blog.csdn.net/ibmfahsion/article/details/11992403 主题 Linux 简单归纳:fd只是一个整数,在open时产生。起到...
  • iOS后台模式开发指南

    千次阅读 2015-05-26 19:41:04
    后台模式教程:开始作为iOS新手,这是我第一次翻译iOS文章,感谢帮我校对的小伙伴,欢迎大家提出不同的意见!转载请注明出处,谢谢! 原文链接 : Background Modes Tutorial: Getting Started 原文作者 : Ray Fix ...
  • 使用mockjs 模拟前后台交互

    千次阅读 2018-11-03 17:36:07
    使用背景: vue项目 axios ...在项目中src文件夹下 新建mock文件夹 新建mock.js 和index.js文件 这里面用来生成基础的接口 项目结构截图: 数据 mock.js 文件 //-----------------mock.js------------------- ...
  • 后台开发基础

    千次阅读 2016-08-03 00:17:45
    (必须非常详尽的解释水平触发和边缘触发的区别,以及边缘触发在编程中要做哪些更多的确认) $、大规模连接上来,并发模型怎么设计 $、tcp结束连接怎么握手,time_wait状态是什么,为什么会有time_wait状态?...
  • 从0到1:微信后台系统的演进之路

    千次阅读 2016-01-18 10:45:29
    转载地址:...编者按:2个月的开发时间,微信后台系统经历了从 0 到 1 的过程。从小步慢跑到快速成长
  • ios 后台无限运行

    千次阅读 2015-01-16 16:57:19
    在IOS后台执行是本文要介绍的内容,大多数应用程序进入后台状态不久后转入暂停状态。在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除。应用程序提供特定的服务,用户可以请求后台执行时间,...
  • 后台服务搭建与nginx服务器

    千次阅读 2018-09-24 12:56:28
    反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个...
  • 第一部分 1.先说说iOS 应用程序5个状态: 停止运行-应用程序已经终止,或者还未...后台-app不再屏幕上显示,但它仍然执行代码。 挂起-app仍然驻留内存但不再执行代码。 按下Home键时,app从活动状态转
  • 手把手教你完成App支付JAVA后台-微信支付JAVA

    万次阅读 多人点赞 2017-12-09 12:54:18
    退款失败=3(由于商户拒绝退款或其他原因导致退款失败) */ insertWxNotice(packageParams); orders.setPayWay("1"); // 变更支付方式为wx orders.setOrderState("1"); // 订单状态为已付款 ordersMapper....
  • Android应用后台网络管控机制

    千次阅读 2018-06-03 13:33:20
    应用后台网络管控机制 概述 &amp;nbsp;&amp;nbsp;&amp;nbsp;在维护手管应用时,经常遇到与应用后台网络控制相关的问题,在解决这些问题的过程中,学习了下应用后台网络控制的流程以及一些日志的分析...
  • 后台开发术语大全

    千次阅读 2019-08-29 19:25:15
    异步调用会瞬间返回,但是异步调用瞬间返回并不代表你的任务就完成了,他会在后台起个线程继续进行任务,等任务执行完毕后通过回调callback或其他方式通知调用方。 并发/并行 并行(parallel) 指在同一时刻,有...
  • Nginx作为高性能的反向代理服务器,常用于后台web服务,接口服务等等的入口。nginx本身提供了相关的安全限制功能,这里主要来讲一下通过nginx限制访问速率,连接数(并发数),带宽速度等,以防止恶意DDOS,恶意爬虫等...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,361
精华内容 10,144
关键字:

后台拒绝连接接口