redis 和mongodb

string、list、hash 数据类型

string list hash结构中,每个至少完成5个命令,包含插入修改删除查询,list和hash还需要增加遍历的操作命令

string list hash结构中,每个至少完成5个命令,包含插入 修改 删除 查询,list 和hash还需要增加遍历的操作命令

 1、 string类型数据的命令操作:
(1) 设置键值:
(2) 读取键值:
(3) 数值类型自增1:
(4) 数值类型自减1:
(5) 查看值的长度:

(1)127.0.0.1:6379> set ss 1
        OK
(2)127.0.0.1:6379> get ss
        "1"

(3)127.0.0.1:6379> incr ss
        (integer) 2
        127.0.0.1:6379> get ss
        "2"

(4)127.0.0.1:6379> decr ss
        (integer) 1
        127.0.0.1:6379> get ss
        "1"

(5)127.0.0.1:6379> set a qwert
        OK
        127.0.0.1:6379> strlen a
        (integer) 5

2、 list类型数据的命令操作:
(1)对列表city插入元素:Shanghai Suzhou Hangzhou
(2)将列表city里的头部的元素移除
(3)将name列表的尾部元素移除到number列表的头部
(4) 对一个已存在的列表插入新元素
(5)查看list的值长度 
 

(1)127.0.0.1:6379> lpush city Shanghai Suzhou Hangzhou
        (integer) 3

(2)127.0.0.1:6379> lpop city
        "Hangzhou"

(3)127.0.0.1:6379> lpush name hehe haha xixi
        (integer) 3
        127.0.0.1:6379> lpush number 34 45 56
        (integer) 3

        127.0.0.1:6379> rpoplpush name number
        "hehe"
(4)127.0.0.1:6379> rpush name hihi
        (integer) 3

(5)127.0.0.1:6379> llen name
        (integer) 3‘

3、 hash类型数据的命令操作:
  (1) 设置一个hash表,order表里包括的键值信息有:id:1,customer_name:张三
  (2)  创建一个hash表,表里的键值批量插入
(3) 获取order对应的map的所有key
(4) 获取order对应的map的键值数量
(5) 获取order表里的id值 
 

 (1)127.0.0.1:6379> hmset order id 1 customer_name "张三"
        OK

        127.0.0.1:6379> hmset customer_name "张三"

        127.0.0.1:6379> hgetall order
        id
        1
        customer_name
        张三

                * 获取字段值时,中文“张三”显示二位进制数,解决:进入redis 时,加上参数--raw (redis-cli --raw),但是没有双引号

(2)127.0.0.1:6379> hmset order2 id 2 customer_name 李四
        OK

(3)127.0.0.1:6379> hkeys order
        id
        customer_name

(4)127.0.0.1:6379> hlen order
        2

(5)127.0.0.1:6379> hmget order id
        1

    4、Keys相关的命令操作
    (1) 查看key是否存在
    (2) 查找满足pattern的keys
    (3) 查看key的超时时间
    (4) 遍历key 

(1)127.0.0.1:6379> exists name
        (integer) 1

(2)127.0.0.1:6379> keys *
        1) "city"
        2) "number"
        3) "order"
        4) "s1"
        5) "a"
        6) "ss"
        7) "name"

(3)127.0.0.1:6379> ttl name
        (integer) -1   * -1表示没设置超时时间

(4)127.0.0.1:6379> scan 0
1) "0"
2) 1) "a"
   2) "number"
   3) "ss"
   4) "city"
   5) "order"
   6) "s1"
   7) "name"

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

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

> use grade
switched to db grade

2. 数据库中创建一个集合名字 class

> db.createCollection("class")
{ "ok" : 1 }

3. 集合中插入若干数据 文档格式如下

{name:'zhang',age;10,sex:'m',hobby:['a','b','c']}
hobby: draw  sing  dance  basketball football  pingpong  computer 
db.class.insertMany([
{name:'刘华',age:12,sex:'m',hobby:['computer','dance']},  
{name:'李明',age:9,sex:'m',hobby:['computer','sing']},  
{name:'王红',age:16,sex:'f',hobby:['darw','dance']},
{name:'小望',age:18,sex:'f',hobby:['star','dance']} ])

4. 查找
查看班级所有人信息
db.class.find()


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


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


查看年龄在 4---8岁之间的学生信息 
db.class.find({age:{$gt:4,$lt:8}})


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


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


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


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


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


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


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


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


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


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


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

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


2. 追加小明兴趣爱好  唱歌
db.class.update({name:"小明"},{$push:{hobby:['sing']}})


3. 小王兴趣爱好增加  吹牛 打篮球
db.class.update({name:"小王"},{$push:{hobby:['吹牛','basketball'c]}})


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

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

6. 删除小明的sex属性
db.class.update({name:"小明"},{$unset:{sex:0}})

7. 删除小李兴趣中的第一项
db.class.update({name:"小李"},{$pop:{hobby:-1}})

8. 将小红兴趣中的画画爱好删除
db.class.update({name:"小红"},{$pull:{hobby:'draw'}})

9.增加分数域 score:{'chinese':88,'english':78,'math':98}
db.class.insert({score:{'chinese':88,'english':78,'math':98}})

 

你可能感兴趣的:(redis,mongodb,数据库)