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"
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}})