关系型数据库 和非关系型数据库nosql
关系型数据库
mysql (excel)
非关系型数据库
1.文档型 json mango 数据存到磁盘上面的
{“name”:“张三”,
“sex”:“男”,
“age”:“18”
}
{
“name”:“李四”,
“sex”:“16”
}
2.key-value型 唯一的key redis 内存缓存到数据库
3.列式数据库
4.图形数据库
List item
mangodb (27017)数据库
存储性 可以存储单表1Pb的数据 存储海量数据
效率性 有索引的情况下 非常快(对内存的使用性大)
结构
sql mongodb 解释
database database 数据库
table collection 数据库/集合
row document 数据记录行/文档
column dield 数据字段/域
index index 索引
table joins 表连接 mongodb不支持
primary key primary key 主键 mongodb 自动将_id 设置为主键
命令行的操作 js shell 在命令行里面可以执行js 语法语句
-help 查看帮助
-db.getName 查看当前操作库
-show dbs; 查看所有数据库
-use namedb 转换到那个db,如果没有则自动创建
-show collections 显示当前所在数据库的所有集合
-show users 查看所有用户
增 如果没有那个集合则自动创建
db.addUser('admin','pwd') 增加或者修改用户密码
一维数据添加
db.集合.insert({“name”:“value”}) 增加一条记录
二维数据添加
db.集合.insert({name:"xiaomi5",whight:156,number:45,area:{province:"beijing"}}) 插入多维数组
数组信息添加
db.集合.insert({name:"xiaomi5",whight:156,number:45,area:{province:"beijing",color:['blank','white','red']}})
删
db.dropDatabase() 删除当前db
db.user1.drop() 删除当下数据库下面 user1集合
db.集合.remove({查询条件})
改
db.集合.update({查询条件},{修改条件})
带$set 查找到修改
db.dong.update({name:"iphonex"},{‘$set’:{"price":"4000"}})
找到并修改
set 查询到 把 整行修改了
db.dong.update({name:"iphonex"},{"price":"4000"})
找到修改 但是吧其他没有改变的值删除了
查 dong集合
db.printCollectionStats() #查看各collection 的状态
db.集合.find(查询条件)
笼统查询
db.dong.find()
查询第一条
db.dong.findOne()
根据字段查询数据
db.dong.find(name:'xiaomi5')
范围查询
> < >= <=
$gt $lt $gte $lte
db.dong.find({price:{"$lt":2000}}) 在集合中查找price小于两千的集合数据
多个条件查询
db.dong.find({price:{"$lt":2000},number:{"$ge":50}}) 在集合中查找price小于两千的并且number大于50的集合数据
多维数据查询
db.dong.find({'arec.city':'nanjing'})
数组查询
db.dong.find({color:red})
db.dong.find({color:{'$all':['red','break']}}) 满足这两个的颜色查询出来
限制查询
db.dong.find({city:15},{name:1,_id:0}) 1 为显示 0为不显示 _id 可以随意设置 其他的要么都为1或0
这样是错误的
db.dong.find({city:15},{name:1,number:0})
$or 查询
db.dong.find({'$or':[{price:500},{'numbre':10},{ 条件 }]})
count()查询条数
limit(num) 查询出指定数目的数据
skip(num) 跳过指定数目的数据
redis (6379)数据库(根据不同的业务模式 使用不同的数据存储结构)
内存高速缓存数据库,数据模型为key-value 但是支持丰富的数据结构 比如
String list(双向链表) hash(哈希) set(集合) sorted set(有序集合 zset)
1 [sort set] 排行榜应用 取 top n操作
2. [list] 获得最新的n个数据 或者分类的最新数据
命令
查看服务器状态 info
key类型
除了空格换行 大部分都可以用
例如
object-type:id:field
key不要太长 查询慢 占内存 不要太短
set key value 添加设置
get key 获取key
keys * 查看key
exists key 查看key是否存在
type key 查看key的类型
del key 删除指定key 可以指定多个
flushdb 删除当前数据库所有key
flushall 删除所有数据库所有key
dbsize 返回当前数据库key数量
expire key seconds 为key指定过期时间
ttl key 返回key过期剩余秒数
move key db-index 从当前数据库移动到指定数据库
select number 默认16库 下标从0开始
String类型
最基本的类型
redis string 可以包含jpg图片或者序列化对象
单个value 值最大上限是1G
如果只用string redis 可以被看做是持久特性的memcache
set key value 添加key value的值
mset key1 value1 key2 value2 一次性添加多个
mget key1 key2 一次性获取多个
incr key 对key做加加操作 并返回新的值
decr key 对key做减减操作 返回新的值
incrby key integer 同上 加指定值
decrby key integer 同上 减指定值
append key value 给指定字符串值追加value
substr key start end 返回截取的key字符串值
例如 subsre name 0 5
list 类型
list其实就是一个双向列表 通过pop push 操作从链表头部或者尾部添加删除元素
这使得list 既可以用做 栈 也可以用作队列
栈(left左边 right右边)
lpush key string 在key对应的list的头部添加字符串元素
rpop key 从list的尾部删除数据 并返回删除的元素
llen key 对应的list长度 key不存在返回0 如果key对应类型不是list返回错误
lrange key start end 返回指定区间内的元素 下标从0开始
rpush key string 同上 在尾部添加
lpop key 从list的头部删除元素 并返回删除元素
ltrim key start end 截取list 保留指定区域内元素
set 类型 不允许重复元素
set是string类型的无序集合
set元素最大可以包含(2的32次方-1)个元素
set集合除了增删操作还有 集合的并集 交集 差集 通过这些可以实现sns好友推荐功能
sadd key member,meber2 添加string 元素到key对应的set集合中
srem key member 从key对应set中移除元素
smove p1 p2 member 从p1对应的set移除 并添加到p2
scard key 返回set元素个数
sismember key member 判断member 是否在set中
sinter key1 key2...keyN 返回所有指定key的交集
sunion key1 key2...keyN 返回所有指定key的并集
sdiff key1 key2...keyN 返回所有指定key的差集
smembers key 返回对应set的所有元素 结果是无序的
zset类型 不允许重复元素
和set一样 sorerd swt 也是string类型元素的集合
不用的是没一个元素都会关联一个权(scorce)
通过权值可以有序的获取集合中的元素
排行榜应用 获取最新的N个数据 计算器应用
zadd key score1 member1 score2 member2.。。 添加元素到集合 存在则更新对应score
Zrem key member 删除指定元素 如果不存在则返回0
zremrangebyrank key min max 删除集合中排名在定区间的元素
Zcard key 返回集合中元素的个数
Zincrby key incr member 按照incr幅度增加对应的member的score值 返回score值 incr是数值 加权操作
Zrank key member 返回指定元素在集合中的排名 集合元素是按score从小到大排序的
zrevrank key member 同上 但是score 按冲大到小
zrange key start end 从集合中取指定元素返回有序结果
zrevrange key start end 同上 返回逆序的
zscore key element 返回指定元素对应的score
hash(哈希)类型
key-value型 (feild:value)
适合存储 key-value型对应格式的数据 json对应关系 对象对应关系 关联数组
hset key field value field value 设置hash field为指定值 如果key不存在 则先创建
hget key field 获取指定的hash field
hmget key field1。。fieldN 获取全部指定的hash field
hmset key filed1 value1 。。。filedn valuen 同事设置多个field
hincrby key field interger 将指定的hash field 加上指定值
hexists key field 测试指定的field是否存在
hdel key field 删除指定的hash field
hlen key 返回指定的field数量
hkeys key 返回所有的field
hvals key 返回所有的value
hgetall key 返回hash 所有的filed 和value