IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 数据存储-MongoDB及Redis 2021-09-28 -> 正文阅读

[大数据]数据存储-MongoDB及Redis 2021-09-28

爬虫系列总目录

本章节介绍数据存储相关内容。Mysql、MongoDB、redis 等基础内容。
第三章 数据库简介与使用
第三章 MongoDB及Redis使用

一、 MongoDB

1.1 MongoDB安装基础命令

windows

启动本地客户端:mongo
查看帮助:mongo –help
退出:exit或者ctrl+c

Mac

跳转到MongoDB安装目录: cd ~/Documents/mongodb
启动服务: mongod --dbpath data --logpath
log/mongod.log --logappend
启动本地客户端:mongo
查看帮助:mongo –help
退出:exit或者ctrl+c

1.2 MongoDB数据库组成

MongoDB是非关系型数据库,它有的是数据库、集合、文档,分别对应关系型里面的数据库、数据表、和表里面一行一行的数据。在MongoDB中,文档构成集合,集合构成数据库。

1.2.1 文档

mongodb里面,文档指的是集合里面的一行数据,一个文档中可以含有多个键值对,可以存放不同的数据类型.

文档组成:

  • _id:用于表示一行文档
  • 键名:一个文档中不可以出现重复的键名,并且严格区分大小写
  • 键值:即键名对应的值

1.2.2 集合

MongoDB中的集合就相当于MySQL中的数据表,集合由文档组成,可以使用show tables查看一个数据库中有哪些集合。

1.2.3 数据库

MongoDB中数据库和MySQL的不同之处在于其组成, show dbs 可以查看相关数据库。

1.3 MongoDB数据类型

  • Object ID: ?档ID
  • String: 字符串, 最常?, 必须是有效的UTF-8
  • Boolean: 存储?个布尔值, true或false
  • Integer: 整数可以是32位或64位, 这取决于服务器
  • Double: 存储浮点值
  • Arrays: 数组或列表, 多个值存储到?个键
  • Object: ?于嵌?式的?档, 即?个值为?个?档
  • Null: 存储Null值
  • Timestamp: 时间戳, 表示从1970-1-1到现在的总秒数
  • Date: 存储当前?期或时间的UNIX时间格式

1.4 MongoDB命令

1. MongoDB数据库命令

注意:use 库名如果该库不存在,则会自动以该名字创建一个新的库,如果后面跟已有的数据库名,则切换到另一个需要操作的数据库。

查看当前的数据库:db
查看所有的数据库:show dbs /show databases
切换数据库:use db_name
删除当前的数据库:db.dropDatabase()

2. MongoDB集合命令

  1. 查看集合:show collections/tables
  2. 不手动创建集合: 向不存在的集合中第?次加?数据时, 集合会被创建出来
    手动创建集合:
db.createCollection(name,options)
db.createCollection("kkb")
db.createCollection("kkb", { capped : true, size : 10 } )
  • 参数capped: 默认值为false表示不设置上限,值为true表示设置上限
  • 参数size: 当capped值为true时, 需要指定此参数,表示上限??,当?档达到上限时, 会将之前的数据覆盖,单位为字节
  1. 删除集合:db.集合名称.drop()

3. MongoDB文档命令

  1. 插入 db.集合名称.insert(document)
    注意:插??档时, 如果未指定_id,MongoDB会为?档分配?个唯?的ObjectId,如果键名已经存在会报错。
db.text.insert({name: '张三',age: 18,sex:'男'})
  1. 保存 db.集合名称.save(document)
    注意:如果文档的_id不存在为添加,如果_id存在则为修改。

  2. 查询
    db.集合名称.find() 查询所有内容
    db.集合名称.findOne() 查询所有内容,但是只返回第?个
    db.集合名称.find().pretty() 查询所有内容,将结果格式化输出

  3. 更新

db.集合名称.update(<query> ,<update>,{multi:<boolean>})

db.info.insert(
[{name: '张三',age: 19,sex: '男'},
{name: '张三',age: 18,sex: '男'},
{name: '张三',age: 17,sex: '男'}])
  • 参数query:查询条件
  • 参数update:更新操作符
  • 参数multi:可选参数,默认是false,表示只更新找到的第?条记录, 值为true表示把满?条件的?档全部更新
  1. 删除
db.集合名称.remove(<query>,{justOne:<boolean>})

删除一条
db.info.remove({name:'lisi'}, {justOne:1})
删除全部
db.info.remove({name:'lisi'})

  • 参数query:可选,删除的?档的条件
  • 参数justOne:可选, 如果设为true或1, 则只删除?条, 默认false, 表示删除多条
  1. 相关运算符
  • 比较运算符
等于: 默认是等于判断, 没有运算符
?于:$lt (less than)
?于等于:$lte (less than equal)
?于:$gt (greater than)
?于等于:$gte
不等于:$ne

查询info集合中年龄大于等于18的人
db.info.find({age:{$gte:18}})
  • 范围运算符
使?"$in""$nin" 判断是否在某个范围内
查询年龄是1719岁的信息
db.info.find({age:{$in:[17,19]}})
  • 逻辑运算符
and:直接写多个条件即可
or:使?$or,值为数组
  • 使用正则表达式
使?//或$regex编写正则表达式
查询李姓信息
db.info.find({name:/^/})
db.info.find({name:{$regex:'^李'}})

二、Redis

  • redis是key-value的数据结构,每条数据都是一个键值对
  • 键的类型是字符串
  • 键不能重复
  • 值的类型分为五种: 字符串string, 哈希hash, 列表list, 集合set, 有序集合zset

2.1 Redis安装基础命令

redis-cli 连接redis
ping 测试命令
select n 切换数据库
redis中数据库没有名称,默认有16个,通过0-15进行标识,在连接成功后默认选择第一个数据库。

2.2 Redis数据操作

2.2.1 键命令

  • 查找键:参数支持正则表达式
keys pattem 
keys *k*  查看包含k的键
keys *    查看所有键
  • 判断键是否存在, 存在返回1,不存在返回0
exists key
  • 查看值的类型
type key 
type k1 查看k1对应的值的类型
  • 设置过期时间,以秒为单位
    如果没有指定过期时间则?直存在,直到使?del移除
expire key seconds
expire k2 5  设置k2过期时间为5
  • 查看有效时间
ttl key
ttl k3  查看键k3的有效时间

2.2.2 String

字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制,安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。

  • 设置键值
    如果设置的键不存在则为添加,如果设置的键已经存在则修改
set key value
set name kkb
# 根据键名获取值
  • 设置键值过期时间,单位是秒
setex key seconds value
set name 5 zhangsan  #设置键为name值为zhangsan 过期时间为5秒的数据
  • 设置键为name值为zhangsan 过期时间为5秒的数据
mset key1 value1 key2 value2
# 设置键k1的值为kkb k2的值为python
mset k1 kkb k2 python
  • 追加值
append key value
append key value  # 在键k1的值后面追加 666
  • 获取
    如果不存在此键则返回nil
get key 获取
mget key1 key2   # 根据多个键获取多个值
  • 删除
    删除键会将对应的值也进行删除
del key1 key2

2.2.3 hash

  • hash?于存储对象,对象的结构为属性、值
  • 值的类型为string
  1. 增加
# 设置单个属性
hset key field value
# 设置多个属性
hmset key field1 value1 field2 value2 
  1. 获取
获取指定键所有的属性
hkeys key
获取?个属性的值
hget key field
获取多个属性的值
hmget key field1 field2
获取所有属性的值
hvals key
  1. 删除
    删除整个hash键及值,使?del命令,
    删除属性,使用hdel命令,删除属性时,属性对应的值会被?起删除
删除属性
hdel key field1 field2
删除user2的age属性
hdel user2 age

2.2.4 list

按照插?顺序排序

  • 索引从左侧开始,第?个元素为0
  • 索引可以是负数,表示尾部开始计数,如-1表示最后?个元素
  1. 增加
在左侧插?数据
lpush key value1 value2 
在右侧插?数据
rpush key value1 value2
在指定元素的前或后插?新元素
linsert key before/after 现有元素 新元素

从键为'k1'的列表左侧加?数据1 2 3
lpush k1 1 2 3

在p前面插入kk
linsert k1 before p kk
  1. 获取
    返回列表?指定范围内的元素,start、stop为元素的下标索引
lrange key start stop

获取k1列表所有元素
lrange k1 0 -1
  1. 修改
lset key index value
修改k1列表中下标为3的元素为4
lset k1 3 4
  1. 删除
    将列表中前count次出现的值为value的元素移除
    count > 0: 从头往尾移除
    count < 0: 从尾往头移除
    count = 0: 移除所有
lrem key count value
# 删除k1右侧中2
lrem k1 -3 2

2.2.5 set

?序集合
元素为string类型
元素具有唯?性,不重复
说明:对于集合没有修改操作

  1. 增加
sadd key member1 member2

向键'all_name'的集合中添加元素'zhangsan''lisi''wangwu'
sadd all_name zhangsan lisi wangwu
  1. 获取
smembers key

获取键all_name的集合中所有元素
smembers all_name
  1. 删除
srem key

删除all_name中的lisi
srem all_name lisi

2.2.6 zset

有序集合,元素为string类型
元素具有唯?性,不重复
每个元素都会关联?个double类型的score,表示权重,通过权重将元素从小到大排序
说明:没有修改操作

  1. 增加
zadd key score1 member1 score2 member2

向键'all_name1'的集合中添加元素'wangwu''zhangsan''zhaoliu''lisi', 权重分别为3142
zadd all_name1 3 wangwu 1 zhangsan 4 zhaoliu 2 lisi
  1. 获取
    返回指定范围内的元素
    start、stop为元素的下标索引
    索引从左侧开始,第?个元素为0
    索引可以是负数,表示从尾部开始计数,如-1表示最后?个元素
zrange key start stop

获取all_name1中所有的元素
zrange all_range 0 -1

返回score值在minmax之间的元素
zrangebyscore key min max

返回成员member的score值
zscore key member

获取键'all_name1'的集合中权限值在13之间的元素
zrangebyscore all_name1 1 3
  1. 删除
删除指定元素
zrem key member1 member2 

删除权重在指定范围的元素
zremrangebyscore key min max

删除集合'all_name1'中元素'lisi'
zrem all_name1 lisi
删除权重在2-4之间的元素
zremrangebyscore all_name1 2 4
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:21:27  更:2021-09-29 10:22:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:27:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码