redis及mongoDB数据库操作

Redis作业

1、string类型数据的命令操作:
(1) 设置键值:
SET key value
例如:
SET name "John"

(2) 读取键值:
GET key
例如:
GET name

(3) 数值类型自增1:
INCR key
例如:
INCR count

(4) 数值类型自减1:
DECR key
例如:
DECR count

(5) 查看值的长度:
STRLEN key
例如:
STRLEN name

2、list类型数据的命令操作:
(1)对列表city插入元素:Shanghai Suzhou Hangzhou
LPUSH key element [element ...]
例如:
LPUSH city Shanghai
LPUSH city Suzhou
LPUSH city Hangzhou

(2)将列表city里的头部的元素移除
LPOP key
例如:
LPOP city

(3)将name列表的尾部元素移除到number列表的头部
RPOPLPUSH source destination
例如:
RPOPLPUSH name number

(4) 对一个已存在的列表插入新元素
RPUSH key element [element ...]
例如:
RPUSH city Beijing

(5)查看list的值长度
LLEN key
例如:
LLEN city

3、hash类型数据的命令操作:
(1) 设置一个hash表,order表里包括的键值信息有:id:1,customer_name:张三
HSET key field value
例如:
HSET order id 1
HSET order customer_name "张三"

(2) 创建一个hash表,表里的键值批量插入
HMSET key field value [field value ...]
例如:
HMSET order id 1 customer_name "张三"

(3) 获取order对应的map的所有key
HKEYS key
例如:
HKEYS order

(4) 获取order对应的map的键值数量
HLEN key
例如:
HLEN order

(5) 获取order表里的id值
HGET key field
例如:
HGET order id

4、Keys相关的命令操作
(1) 查看key是否存在
EXISTS key
例如:
EXISTS name

(2) 查找满足pattern的keys
KEYS pattern
例如:
KEYS user_*

(3) 查看key的超时时间
TTL key
例如:
TTL session_id

(4) 遍历key
SCAN cursor [MATCH pattern] [COUNT count]
例如:
SCAN 0 MATCH *

作业二:举例说明list和hash的应用场景,每个至少一个场景

List应用场景:
1. 消息队列:List结构在实现消息队列中非常常见。可以将消息作为元素依次插入到List的尾部,消费者通过弹出List头部的元素来获取消息。这种方式可以实现简单的消息发布与订阅模式。

示例场景:在一个实时聊天应用中,将聊天消息作为List的元素依次插入到队列尾部,然后消费者可以从队列头部获取消息并进行处理。

Hash应用场景:
1. 缓存数据存储:由于Hash结构拥有键值对的特性,非常适合用于缓存数据的存储。可以将对象的属性作为Hash的字段,属性值作为Hash的值,这样可以将一个完整对象存储在一个Hash结构中。

示例场景:在一个电子商务网站中,可以将商品信息存储在Hash结构中,其中每个商品对应一个Hash结构,商品的各种属性(名称、价格、描述等)可以作为Hash的字段,并且可以通过Hash操作快速获取和更新商品信息。

总结:
List适用于按照顺序存储和处理数据的场景,常用于消息队列、日志队列等实时数据处理场景。
Hash适用于将复杂对象或结构化数据存储在Redis中,并方便地对其中的字段进行读取和更新的场景,常用于缓存数据、存储对象信息等。

mongodb作业  

1. 创建一个数据库 名字grade
use grade

2. 数据库中创建一个集合名字class
db.createCollection("class")

3. 集合中插入若干数据
db.class.insertMany([
  {
    name: 'zhang',
    age: 10,
    sex: 'm',
    hobby: ['a', 'b', 'c']
  },
  {
    name: 'li',
    age: 8,
    sex: 'f',
    hobby: ['draw', 'sing', 'dance', 'basketball', 'football', 'pingpong', 'computer']
  },
])

4. 查找

1、查看班级所有人信息
db.class.find()

2、 查看班级中年龄为8岁的学生信息
db.class.find({ age: 8 })

3、 查看年龄大于10岁的学生信息
db.class.find({ age: { $gt: 10 } })

5、查看年龄在4~8岁之间的学生信息
db.class.find({ age: { $gte: 4, $lte: 8 } })

6、 找到年龄为6岁且为男生的学生
db.class.find({ age: 6, sex: 'm' })

7、 找到年龄小于7岁或者大于10岁的学生
db.class.find({ $or: [{ age: { $lt: 7 } }, { age: { $gt: 10 } }] })

8、 找到年龄是8岁或者11岁的学生
db.class.find({ age: { $in: [8, 11] } })

9、 找到兴趣爱好有两项的学生
db.class.find({ hobby: { $size: 2 } })

10、找到兴趣爱好有draw的学生
db.class.find({ hobby: 'draw' })

11、 找到既喜欢画画又喜欢跳舞的学生
db.class.find({ hobby: { $all: ['draw', 'dance'] } })

12、 统计爱好有三项的学生人数
db.class.find({ hobby: { $size: 3 } }).count()

13、 找出本班年龄第二大的学生
db.class.find().sort({ age: -1 }).limit(1).skip(1)

14、查看学生的兴趣范围
db.class.distinct('hobby')

15、将学生按年龄排序找到年龄最大的三个
db.class.find().sort({ age: -1 }).limit(3)

16、 删除所有年龄大于12或者小于4岁的学生
db.class.deleteMany({ $or: [{ age: { $gt: 12 } }, { age: { $lt: 4 } }] })

5. 增加、更新、删除、统计
1、 将小红的年龄变为8岁,兴趣爱好变为跳舞、画画
db.class.updateOne({ name: 'zhang' }, { $set: { age: 8, hobby: ['dance', 'draw'] } })

2、 追加小明兴趣爱好:唱歌
db.class.updateOne({ name: 'ming' }, { $push: { hobby: 'sing' } })

3、小王兴趣爱好增加:吹牛、打篮球
db.class.updateOne({ name: 'wang' }, { $addToSet: { hobby: { $each: ['吹牛', '打篮球'] } } })

4、小李增加爱好:跑步和唱歌,但是不要和以前的重复
db.class.updateOne({ name: 'li' }, { $addToSet: { hobby: { $each: ['跑步', '唱歌'] } } })

5、 该班所有同学年龄加1
db.class.updateMany({}, { $inc: { age: 1 } })

6、 删除小明的sex属性
db.class.updateOne({ name: 'ming' }, { $unset: { sex: '' } })

7、删除小李兴趣中的第一项

 db.class.updateOne({ name: 'li' }, { $pop: { hobby: -1 } })

8、将小红兴趣中的画画爱好删除

db.class.updateOne({ name: 'wang' }, { $pull: { hobby: 'draw' } })

 增加分数域 score:{'chinese':88,'english':78,'math':98}

db.class.updateMany({}, { $set: { score: { chinese: 0, english: 0, math: 0 } } })

1、按照性别分组统计每组人数

db.class.aggregate([ { $group: { _id: '$sex', count: { $sum: 1 } } } ])

2、按照姓名分组,过滤出有重名的同学

db.class.aggregate([ { $group: { _id: '$name', count: { $sum: 1 } } }, { $match: { count: { $gt: 1 } } }, { $project: { _id: 0, name: '$_id' } } ])

3、统计每名男生的语文成绩

 db.class.aggregate([ { $match: { sex: 'm' } }, { $group: { _id: '$name', chinese: { $first: '$score.chinese' } } } ])

4、将女生按照英语分数降序排列

db.class.find({ sex: 'f' }).sort({ 'score.english': -1 })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值