Redis安全与性能

news2025/1/17 13:55:37

文章目录

  • 第1关:持久化
  • 第2关:复制
  • 第3关:Redis事务与流水线


第1关:持久化

1、创建快照的方式有:

A、执行 SAVE 命令

B、执行 BESAVE 命令

C、使用 save 选项配置自动快照

D、通过客户端发送关闭服务器请求

E、以上均可

2、AOF 持久化中,最佳的同步策略是:

A、everysec

B、no

C、yes

D、always

3、下面是配置文件 redis.conf 中的一个重写 AOF 配置:

auto-aof-rewrite-percentage 120
auto-aof-rewrite-min-size 512mb
请问这个配置代表什么意思?

A、当目前 AOF 文件大小超过上一次重写后的文件大小的 120% 时进行重写

B、当目前 AOF 文件大小是上一次重写后的文件大小的 120% 时进行重写

C、当目前 AOF 文件超过 512mb 后进行重写

D、当目前 AOF 文件超过上一次重写后的文件大小 512mb 时进行重写

E、以上选项均不正确

4、假设有这样一个系统,该系统:
接收并处理用户的订票请求
对机票的库存信息进行实时刷新
机票出票要求:
机票有库存
用户已付款
用户量在1000万以上,每日订单量在5000千万以上
使用 Redis 存储用户,机票,订单等信息
所有数据要求保留一年以上
请问该系统应该选择怎样的持久化方法?

A、单RDB持久化

B、单AOF持久化

C、同时开启RDB持久化与AOF持久化

D、不使用持久化
在这里插入图片描述

在这里插入图片描述

第2关:复制

1、某 Redis 实例已启动,现想将其变成:

主机地址为 127.0.0.1
端口号为 6381
的 Redis 实例的从数据库,应该输入哪条命令?

A、SLAVEOF no one

B、SLAVEOF 127.0.0.1 6381

C、redis-server --port 6380 --slaveof 127.0.0.1 6381

D、SLAVEOF host port

2、现有一组主从数据库,其主数据库为 127.0.0.1:6379,从数据库为 127.0.0.1:6380。依次执行下列操作:

(主数据库中)LPUSH email:queue jack bob josiah
(从数据库中)RPOP email:queue
(从数据库中)LPUSH email:queue david
(主数据库中)LPUSH email:queue sam
该主从数据库中,主数据库负责写,从数据库负责读,采用默认配置,请问现在主数据库中的 email:queue 队列内的元素顺序如何(从左至右)?

A、sam josiah bob jack

B、jack bob josiah sam

C、david josiah bob

D、jack bob david

3、下列说法中正确的是?

A、从数据库都是只读的

B、在复制初始化过程中,主数据库接收到从数据库发来的 SYNC 命令后,可能会执行 BESAVE 命令,也可能不执行

C、Redis 的主从复制,主数据库与从数据库之间始终都不同步

D、主从链的作用是加快主数据库同步到多个从数据库的速度

E、终止主从关系后,主从数据库之间不再进行复制同步

4、在一对主从数据库中,主数据库关闭了所有持久化配置,从数据库打开了 AOF 持久化,以每秒一次的速度向硬盘追加写入 AOF 文件。现在主数据库因断电关闭,要恢复到断电前的工作状态,应该如何操作?

A、快速重启主数据库

B、快速重启主数据库,并在主数据库上执行 SYNC 命令,请求同步数据

C、终止从数据库与主数据库的主从关系,重启原来的主数据库,并将其设置为新的主数据库的从数据库

D、重启主数据库并开启持久化配置

在这里插入图片描述

在这里插入图片描述

第3关:Redis事务与流水线

根据提示,在右侧Begin-End区域补充代码,完成商品交易平台的后端处理逻辑:

请在下述两个方法中均使用非事务性流水线减少通信往返次数。
在 add_item_to_market(itemid, sellerid, price) 方法中:
该方法作用是:用户将商品加入到买卖平台上
参数说明:
itemid 是商品 ID
sellerid 是卖家 ID
price 是商品价格。
该过程描述及返回值描述:
卖家拥有该商品。
扣除卖家商品成功
从用户仓库中扣除该商品。
将商品加入到商品买卖信息有序集合中。
返回 True

  • 扣除卖家商品失败
    • 5 秒内重试加入事务。
      重试失败,返回 False
      卖家不拥有该商品。
      不允许将商品加入平台。
      返回 None
      在 purchase(buyerid, itemid) 方法中:
      该方法作用是:用户从买卖平台上购买商品
      参数说明:
      buyerid 是买家 ID
      itemid 是商品买卖信息中的成员,格式是 itemX.userX,其中:
      itemX 是商品 ID
      userX 是卖家 ID
      该过程描述及返回值描述:
      买家在购买其他商品/该商品已被其他用户买走:
      在 10 秒内重试购买事务。
      重试失败,返回 False
      买家未同时购买其他商品,该商品仍在平台上:
      买家用户余额是否足够购买该商品,若足够:
      买家用户余额减去商品价格的数值。
      卖家用户余额增加商品价格的数值。
      从商品买卖信息有序集合中移除该商品。
      为买家用户仓库增加该商品。
      返回 True
      若不足够:
      终止交易。
      返回 None
      测试说明
      在这里插入图片描述

代码示例如下:

#!/usr/bin/env python  
#-*- coding:utf-8 -*-
import time  
import redis
conn = redis.Redis()
# 将商品放到平台上  
def add_item_to_market(itemid, sellerid, price):  
    # 请在下面完成要求的功能  
    #********* Begin *********#  
    repertory = "inventory:" + sellerid  
    item = itemid + "." + sellerid  
    end = time.time() + 5  
    pipe = conn.pipeline()
    while time.time() < end:  
        try:  
            pipe.watch(repertory)  
            if not pipe.sismember(repertory, itemid):  
                pipe.unwatch()  
                return None  
            pipe.multi()  
            pipe.zadd("market", item, price)  
            pipe.srem(repertory, itemid)  
            pipe.execute()  
            return True  
        except redis.exceptions.WatchError:  
            pass  
    return False  
    #********* End *********#
# 购买商品  
def purchase(buyerid, itemid):  
    # 请在下面完成要求的功能  
    #********* Begin *********#  
    item, sellerid = itemid.split(".")  
    buyer = "users:" + buyerid  
    seller = "users:" + sellerid  
    repertory = "inventory:" + buyerid  
    end = time.time() + 10  
    pipe = conn.pipeline()
    while time.time() < end:  
        try:  
            pipe.watch("market", buyer)  
            price = pipe.zscore("market", itemid)  
            funds = int(pipe.hget(buyer, "funds"))  
            if funds < price:  
                pipe.unwatch()  
                return None
            pipe.multi()  
            pipe.hincrby(seller, "funds", int(price))  
            pipe.hincrby(buyer, "funds", int(-price))  
            pipe.sadd(repertory, item)  
            pipe.zrem("market", itemid)  
            pipe.execute()  
            return True  
        except redis.exceptions.WatchError:  
            pass  
    return False  
    #********* End *********#  

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1293930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python---time库

目录 时间获取 时间格式化 程序计时 time库包含三类函数&#xff1a; 时间获取&#xff1a;time() ctime() gmtime() 时间格式化&#xff1a;strtime() strptime() 程序计时&#xff1a;sleep() perf_counter() 下面逐一介绍&#…

[Linux] Bash脚本多函数应该如何执行?使用eval提高脚本编写效率!

在工作过程中经常会编写一些测试脚本&#xff0c;有些脚本里有多个函数&#xff0c;要通过用户输入执行对应的函数&#xff0c;如这样&#xff1a; 这也太麻烦了吧 执行如下&#xff1a; 这样在函数多的情况下需要写很多判断&#xff0c;效率低下。 我们可以使用eval命令来进行…

【深度学习】一维数组的聚类

在学习聚类算法的过程中&#xff0c;学习到的聚类算法大部分都是针对n维的&#xff0c;针对一维数据的聚类方式较少&#xff0c;今天就来学习下如何给一维的数据进行聚类。 方案一&#xff1a;采用K-Means对一维数据聚类 Python代码如下&#xff1a; from sklearn.cluster im…

Zabbix自定义飞书webhook告警媒介1

说明&#xff1a;此配置仅适用于7版本及以上&#xff0c;低版本可能有问题 JavaScript 内容如下&#xff1a; try {var sourceData JSON.parse(value),req new HttpRequest(),response;if (sourceData.HTTPProxy) {req.setProxy(sourceData.HTTPProxy);}req.addHeader(Conte…

vuepress-----20、全文搜索

默认主题自带的搜索, 只会为页面的标题、h2、h3 以及 tags构建搜索索引。所以尽量将围绕知识点的关键字体现到标题上。而 tags 更为灵活&#xff0c;可以把相关的能想到的关键字都配置到 tags 中&#xff0c;以方便搜索。 默认插件介绍 (opens new window) 默认主体配置 (ope…

Latex公式中矩阵的方括号和圆括号表示方法

一、背景 在使用Latex写论文时&#xff0c;不可避免的涉及到矩阵公式。有的期刊要求矩阵用方括号&#xff0c;有的期刊要求矩阵用圆括号。因此&#xff0c;特记录一下Latex源码在两种表示方法上的区别&#xff0c;以及数组和方程组的扩展。 二、矩阵的方括号表示 首先所有的…

CnetSDK .NET OCR Library SDK Crack

CnetSDK .NET OCR Library SDK Crack CnetSDK .NET OCR Library SDK 是一款高精度 .NET OCR 扫描仪软件&#xff0c;用于从图像中识别字符&#xff0c;如文本、手写和符号。该.NET OCR库软件采用Tesseract OCR引擎技术&#xff0c;将字符识别准确率提高高达99%。通过将 .NET OC…

时序数据库选型TimescaleDB

最近要做一个数字车间的物联网项目&#xff0c;数据存储成了首先要解决的问题&#xff0c;整个车间一共104台数控机床&#xff0c;1s钟采集1次数据&#xff0c;360024365*1043,279,744,000 &#xff0c;一年要产生32亿条记录&#xff0c;这个数据量用常见的关系型数据库肯定是不…

PHP对接企业微信

前言 最近在做项目中&#xff0c;要求在后台管理中有企业微信管理的相关功能。相关准备工作&#xff0c;需要准备好企业微信账号&#xff0c;添加自建应用&#xff0c;获得相应功能的权限&#xff0c;以及agentid、secre等。 参考文档&#xff1a; 企业微信开发文档 功能实现 因…

MacBook 逆水寒下载安装使用教程,支持最新版本 MacOS 流畅不闪退

最近 MacBook 系统更新到了 MacOS 14.1 很多朋友的逆水寒玩不了了&#xff0c;我尝试了一番可以正常玩了&#xff0c;看图&#xff1a; 其实操作也很简单&#xff0c;我们从头开始&#xff0c;因为 MacOS 系统的更新所以我们也需要更新新版本的 playCover 来适配新的系统&#…

【Vue第3章】使用Vue脚手架_Vue2_笔记

笔记 脚手架文件结构 ├── node_modules ├── public │ ├── favicon.ico: 页签图标 │ └── index.html: 主页面 ├── src │ ├── assets: 存放静态资源 │ │ └── logo.png │ │── component: 存放组件 │ │ └── HelloWorld.vue …

配置禁止BT下载的示例

如图1所示,企业内用户通过交换机连接到RouterA的Eth2/0/0,并通过RouterA的GE0/0/1接口连接到WAN侧网络。 现在要求在RouterA上通过配置基于智能应用控制SAC(Smart Application Control)的流分类,禁止企业用户进行BT下载。 图1 配置禁止BT下载的组网图: 操作步骤 1.Rout…

[原创][6]探究C#多线程开发细节-“ConcurrentDictionary<T,T>解决多线程的无顺序性的问题“

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…

电商系统架构演进

聊聊电商系统架构演进 具体以电子商务网站为例&#xff0c; 展示web应用的架构演变过程。 1.0时代 这个时候是一个web项目里包含了所有的模块&#xff0c;一个数据库里包含了所需要的所有表&#xff0c;这时候网站访问量增加时&#xff0c;首先遇到瓶颈的是应用服务器连接数&a…

【动态规划】03使用最小花费爬楼梯(easy1)

题目链接&#xff1a;leetcode使用最小花费爬楼梯 目录 题目解析&#xff1a; 算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码 题目解析&#xff1a; 题目让我们求达到楼梯顶部的最低花费. 由题可得&#xff1a; cost[i] 是从楼梯第 i 个…

AI并行计算:CUDA和ROCm

1 介绍 1.1 CUDA CUDA&#xff08;Compute Unified Device Architecture&#xff09;是Nvidia于2006年推出的一套通用并行计算架构&#xff0c;旨在解决在GPU上的并行计算问题。其易用性和便捷性能够方便开发者方便的进行GPU编程&#xff0c;充分利用GPU的并行能力&#xff0…

利用管道、信号量、信号、共享内存和消息队列进行多进程通信

一.管道&#xff08;分为命名管道和匿名管道&#xff09; 管道的特点&#xff1a; ①无论是命名管道还是匿名管道&#xff0c;写入管道的数据都存放在内存之中。 ②管道是一种半双工的通信方式&#xff08;半双工是指终端A能发信号给终端B&#xff0c;终端B也能发信号给终端…

ISIS默认路由下发的各种机制

作者简介&#xff1a;大家好&#xff0c;我是Asshebaby&#xff0c;热爱网工&#xff0c;有网络方面不懂的可以加我一起探讨 :1125069544 个人主页&#xff1a;Asshebaby博客 当前专栏&#xff1a; 网络HCIP内容 特色专栏&#xff1a; 常见的项目配置 本文内容&am…

VC++使用GetProcessTimes获取进程创建时间、销毁时间、用户态时间、内核态时间

一、GetProcessTimes函数简介&#xff08;微软MSDN&#xff09; 微软提供了一个非常有用的API函数GetProcessTimes用来获取进程创建时间、销毁时间、用户态时间、内核态时间&#xff0c;msdn连接为&#xff1a;GetProcessTimes 函数 (processthreadsapi.h) 其函数原型为&#…

网络管理相关

管理功能分为管理站manager和代理agent两部分。 网络管理&#xff1a; 网络管理系统中&#xff0c;每一个网络节点都包含有一组与管理有关的软件&#xff0c;叫做网络管理实体NME。 管理站的另外一组软件叫做网络管理应用NMA&#xff0c;提供用户接口&#xff0c;根据用户命令显…