第一部分(基础题)
- 使用geo数据类型,添加北京、上海、武汉、广州、乌鲁木齐、拉萨六个城市的经纬度信息,连接Redis客户端实现以下命令(共计10分):
录入信息:
单条插入:
多条插入:
- 计算北京到广州,北京到乌鲁木齐的距离(输出单位为km)。(8分)
北京到上海的距离:
北京到乌鲁木齐的距离:
- 以武汉为中心,2000公里为半径,统计该范围内所在的城市。(2分)
要求给出操作命令截图和结果截图。
2、连接MongoDB客户端执行以下操作,要求给出操作命令截图和结果截图,数据表如下所示。(共计20分)
name | sex | birthday | | city |
zhang | male | 1995-01-24 | zhang@sina.com | shanghai |
wang | female | 1995-01-24 | wang@163.com | |
li | female | 1991-03-04 | guangzhou | |
zhao | male | 1996-11-03 | zhao@126.com |
- 创建名为Demo的数据库,并在Demo中创建名为info的集合。(4分)
- 将集合名info修改为Person。(2分)
- 向Person集合中批量插入表中的内容。(4分)
表中空数据使用0代替
- 将文档中sex为female的city信息更新为“beijing”(只更新满足条件的第一个文档)(2分)
查看更新后的表
- 删除集合中birthday为“1995-01-24”的文档(只删除满足条件的第一个文档)(2分)
查看:
- 对Person集合中的name和birthday键建立复合索引,并设置索引名为“Person_index”(3分)
- 使用管道操作对sex进行分组求和。(3分)
第二部分(编程题)
使用java或python语言连接Redis和MongoDB数据库,完成以下习题,要求给出必要的文字说明,代码截图以及程序运行结果截图。
1.将下列数据用Redis的Set集合来存储,分别添加集合A和集合B元素,集合A={a,b,c,d,e},集合B={c,d,e,f,g,i}。(共计16分)
- 分别统计集合A和集合B的元素数。(4分)
- 判断元素m是否存在于集合B中。(2分)
- 获取集合B所有元素。(2分)
- 求集合A、B的并集、交集、差集。(8分)
2. MongoDB数据操作(每小题2分,共计14分):
- 使用pip install pymong命令安装pymong包,新建数据库test_mongdb1。
(2)在test_mongdb数据库下新建集合testcollection
在shell界面查看:
(3)对集合testcollection重命名为person。(对集合重命名应该放在插入数据之后的位置上,否则无意义,数据保存的位置还是在之前的集合中。
另外test.rename(‘person’)应该放在操作的最后面否则在shell界面中的内容不会被修改。
例如test.rename()在没有插入内容前:
在shell界面查看:
在插入内容后:
Shell界面查看,发现数据没有被修改:
对集合重命名的语句:
在shell界面查看集合:
(4) 向集合person中插入以下文档数据
_id | name | sex | age |
1 | xiaoming | man | 21 |
2 | xiaohong | woman | 20 |
3 | xiaoliang | man | 22 |
- 检索person中的所有文档。
(6)更新xiaohong的信息为23岁。
在shell界面查看信息:
(7)删除xiaoliang的信息。
在shell界面查看信息:
第三部分(操作题)
- 搭建Redis主从集群,该集群由一个主节点(master)和三个从节点(slave)组成,主节点端口号设置为9001,从节点端口号分别设置为9002、9003、9004。主从集群搭建完成后,分别在主节点和从节点执行读命令和写命令(测试数据自己指定即可)。(15分)
1)修改redis.conf文件,开启rdb,关闭aof
开启rdb持久化:
关闭aof:
2)新建test2文件夹用来搭建主从集群完成测试(一个主节点、三个从节点)
mkdir test(test2文件夹与root目录同级)
3)在test目录下新建9001、9002、9003、9004文件夹存放redis.conf文件
Mkdir 9001、9002、9003、9004
4)把export/servers/redis目录下的redis.conf文件分别复制到这四个文件夹中(我原有的redis.conf文件在export/servers/redis中)
5)依次配置redis.conf文件,#去掉密码(方便操作)
#在redis.conf文件开头加入redis实例的声明 ip(确保三个节点均在同一个ip地址)
注释密码:
加入redis实例的声明ip:
确保端口号正确
修改目录文件(分别在各自目录生成rdb文件):
后台启动改为前台启动(方便查看日志信息):
6)打开多个终端并分别按照端口号重命名,开启多终端执行模式,同时启动两个redis.conf文件(在test目录下执行分别执四个个命令,端口号不一样其他操作命令一样,下面两个演示):
7)开启主从关系
8)读写分离测试
主节点读写操作
从节点9002读写操作
从节点9003读写操作
- 搭建哨兵集群用来监测题目(1)中搭建的主从集群,四个哨兵端口号分别设置为29001、29002、29003、29004。(10分)
1)进入到test2目录下,新建四个文件夹mkdir 29001 29002 29003 29004
2)分别进入文件夹下创建一个sentinel.conf文件配置一下内容
3)在29002,29003,29004目录下分别配置文件,只需要修改端口号和路径即可
4)使用命令redis-sentinel 29001/sentinel.conf开启哨兵,每个哨兵开启只需要将“29001”修改成对应的哨兵文件即可。
- 让主节点9001停机,观察29001至29004四个哨兵的日志信息,在9002、9003、9004三个从节点中选取一个节点作为新的主节点,并分别在新的主节点和从节点上完成读写测试(测试数据自己指定即可)(15分)
- 让主节点宕机,观察日志信息发现9003成为主节点。
- 对9001节点进行写操作,发现无法写入
3)查看9003节点的当前状态,发现节点成为了主节点
4)对9003节点进行读写测试,发现既可以写数据又可以读数据。
要求:给出必要的文字说明,以及必要的截图,包括配置文件修改、主从集群搭建、哨兵集群的搭建、集群节点状态信息、主从节点读写数据测试等。