sql作业

1-什么是CAP?

CAP理论是Eric Brewer教授提出的,分别是一致性(Consistency),可用性(Availability),分区容错性(Tolerance of network Partition),三者不能同时满足。CAP三者可以按照如下的方式来理解:

一致性:数据复制的时候,按照强一致性的方式进行数据复制。保证了在读操作总是能够读                 取到之前写入的数据,无论从那个主数据或者副本数据。
可用性:数据写入成功后,正在进行数据复制时,任何一个副本节点发生异常也不会影响此                 次写入操作。可以理解为,此时数据的复制采用的是弱一致性,数据的读写操作在                 单台集器发生故障的情况下仍然可以正常执行。
分区容错性:在服务实例发生异常时,分布式系统任然能够满足一致性和可用性。

2-Redis 配置文件中有哪些核心的配置信息?作用分别是什么?

1.UNITS:配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit。大小                   写不敏感。

2.INCLUDES:类似 JSP 程序中的 include,多实例的情况可以把公用的配置文件提取出                    来。

3.NETWORK:

3.1 bind:默认情况下 bind=127.0.0.1 只能接受本机的访问请求。在不写的情况下,无限制                  接受任何 IP 地址的访问。

                生产环境需要填写你应用服务器的地址。由于服务器是需要远程访问的,所以需                    要将其注释掉。

3.2 protected-mode:将本主机访问保护模式设置

3.3 port:端口号,默认 6379

3.4 cp-backlog:设置 tcp 的 backlog,backlog 其实是一个连接队列,backlog队列总和 =                     未完成三次握手队列 + 已经完成三次握手队列。

               在高并发环境下你需要一个高 backlog 值来避免慢客户端连接问题。

3.5 timeout:一个空闲的客户端维持多少秒会关闭,0表示关闭该功能。即永不关闭。

3.6 tcp-keepalive:对访问客户端的一种心跳检测,每 n 秒检测一次。

               单位为秒,如果设置为0,则不会进行 Keepalive 检测,建议设置成 60。

4.GENERAL:

4.1 daemonize:是否为后台进程,即守护进程,用于后台启动,设置为yes。

               在yum安装方式中 会自动创建服务启动文件 并自动 存放在后台

4.2 pidfile:存放pid文件的位置,每个实例会产生一个不同的pid文件。

4.3 loglevel:指定日志记录级别,Redis 总共支持四个级别:debug、verbose、notice、                     warning,默认为notice。

               四个级别根据使用阶段来选择,生产环境选择 notice 或者warning。

4.4 logfile:日志文件名称

4.5 databases:设定库的数量,默认16,默认数据库为0,可以使用 SELECT <dbid>命令在                  连接上指定数据库id。

5.SECURITY

5.1 设置密码:当设置好密码后(即把 requirepass foobared 注解解开),然后使用客户端                  连接服务器后,在执行 set 命令时,提示需要获取权限。

6.CLIENTS

6.1 maxclients:设置redis同时可以与多少个客户端进行连接。默认情况下为10000个客户                   端。如果达到了此限制,redis则会拒绝新的连接请求,并且向这些连接请求方发出                 “max number of clients reached”以作回应。

7.MEMORY MANAGEMENT

7.1 maxmemory:设置redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除                内部数据,移除规则可以通过maxmemory-policy来指定。

               如果redis无法根据移除规则来移除内存中的数据,或者设置了“不允许移除”,那么                 redis则会针对那些需要申请内存的指令返回错误信息,比如SET、LPUSH等。

               但是对于无内存申请的指令,仍然会正常响应,比如GET等。如果你的redis是主                   redis(说明你的redis有从redis),那么在设置内存使用上限时,需要在系统中留                   出一些内存空间给同步队列缓存,只有在你设置的是“不移除”的情况下,才不用考                  虑这个因素。

7.2 maxmemory-policy:用于设置内存达到使用上限后的移除规则。有以下参数可设置:

volatile-lru:使用LRU算法移除key,只对设置了过期时间的键;(最近最少使用)

allkeys-lru:在所有集合key中,使用LRU算法移除key

volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键

allkeys-random:在所有集合key中,移除随机的key

 volatile-ttl:移除那些TTL值最小的key,即那些最近要过期的key

noeviction:不进行移除。针对写操作,只是返回错误信息

7.3 maxmemory-samples:用于设置样本数量,LRU算法和最小TTL算法都并非是精确的算                 法,而是估算值,所以你可以设置样本的大小,redis默认会检查这么多个key并选                 择其中LRU的那个。

               一般设置3到7的数字,数值越小样本越不准确,但性能消耗越小。


3-乐观悲观锁的区别?

悲观锁:每次去拿数据的时候都默认为别人会修改,所以每次拿数据的时候都会上锁。这                     样,别人拿到这个数据的时候都会block直接拿到锁。

乐观锁:每次去拿数据的时候都默认为别人不会修改,所以不会上锁,但是,在更新的时侯                 会判断在此期间别人有没有去更新这个数据,可以使用版本号等机制。


4-Redis 主从复制原理?

Redis 一般是使用一个 Master 节点来进行操作,而多个 Slave 节点进行操作,Master 和 Slave 分别代表了一个个不同的 Redis Server 实例。

另外定期的数据备份操作也是单独选择一个 Slave 去完成,这样可以最大程度发挥 Redis 的性能,为的是保证数据的弱一致性和最终一致性。

另外,Master 和 Slave 的数据不是一定要即时同步的,但是在一段时间后 Master 和 Slave 的数据是趋于同步的,这就是最终一致性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值