自己遇到的错误
主要是sql的相关知识其他的会用即可
# Mysql
留坑了
# mongodb
字典一样的数据结构,面向文档式的管理
- 区分大小写
- key唯一,不可重复
- 文档可嵌套
- 键值对是有序的 集合许多文档构成了一个集合(表) 命名规则
- 不能是空字符串("")
- 不能包含\0字符(空字符)
- 不能使用system.的前缀(系统保留)
- 建议不包含保留字“$"
- 用.分割不同命名空间的子集合(如:blog.users,blog.posts)
每个数据库有独立的权限,不要和保留的重合admin,local,config 只有在服务启动的状态下才会提供服务
# 安装远程访问和可视化
win下我不说了简单的很,注意那个附加软件下载很慢,mongo的数据库启动
linux下我直接从宝塔安装,wget安装也行网上一大堆,把bin连接到path就行了
修改配置文件/etc/mongodb.conf,把bindip 改为0.0.0.0,防火墙开放27017端口
auth=true
这时不要关闭mongo,进入mongo命令行,use admin,db.createUser({user:"root",pwd:"654321",roles:[{role:"userAdminAnyDatabase",db:"admin"},{role:"__system",db:"admin"}]})
在使用mongo的命令的时候会报错,所以先执行db.auth("root","123456") 返回1表示验证成功可以正常执行
注意
db.addUser("root","123456") 在3.6版本中已经不支持这个方法了,只能使用createUser函数
设置roles的时候,一定要加上 __system (有两个下划线) 这个角色
然后重启服务远程访问应该可以了
mongoadmin
git地址在这里 需要有git,node ,npm(用yum安装,我用宝塔失败了)进入adminmongo,npm install 按照github说的编辑这个文件,添加
{
"app": {
"host": "0.0.0.0",
"port": 4321,
"password": "自己设置一个密码",
"locale": "en",
"context": "dbApp",
"monitoring": false
}
}
不过注意的是没有中文,把de改为en,host改为0.0.0.0全监听然后一个密码
最后npm start 进入你的ip(不是云服务器的话就是127)http://127.0.0.1:1234
mongodb://用户名(root):你adduser的密码@127.0.0.1:/
完成!
# 操作
win下命令行直接mongod --dbpath 某个文件夹路径
- db; 查看自己现在在那个db下面
- show; dbs 显示所有的db
- use **; 使用某个db,没有的话自己创建
# Redis
用途
存在于内存中的,分布式,高性能缓存数据库 数据库、缓存和消息中间件类型
字符串(strings) 散列(hashes) 列表(lists) 集合(sets) 有序集合(sorted sets)
# 安装可视化远程连接
首先安装redis
yum install epel-release
yum install redis
一路按y就行了
vim /etc/redis.conf 修改配置文件
bind 127.0.0.1 改为 0.0.0.0
protected-mode 注释掉
requirepass 你的密码
WARNING
配置文件项前面不能有空格,靠到最右边
可视化
下载(我也很奇怪为什么在这种xx软件站上下载但是这个能用) 直接解压,jre和jar包+exe都解压出来放在一个文件夹下,直接运行# 操作
操作需要密码auth + 你的密码就可以了
或者登陆验证
redis-cli -h 127.0.0.1 -p 6379 -a 你的密码
字符串(String)相关操作
[root@izuf6720onwdpnl2xfy65lz ~]# redis-cli 127.0.0.1:6379> set cat 铃铛 (error) NOAUTH Authentication required. 127.0.0.1:6379> auth 你的密码 OK 127.0.0.1:6379> set cat 铃铛 OK 127.0.0.1:6379> get cat "\xe9\x93\x83\xe9\x93\x9b"#中文编码问题 127.0.0.1:6379> ls (error) ERR unknown command `ls`, with args beginning with: 127.0.0.1:6379> 127.0.0.1:6379> mset user1 a user2 b OK 127.0.0.1:6379> mget user1 user2 animal 1) "a" 2) "b" 3) (nil)#这个意思是这个值不存在 127.0.0.1:6379> del user1 (integer) 1#受影响的字符串长度 127.0.0.1:6379> get user1 (nil) 127.0.0.1:6379> append animal cat (integer) 3 127.0.0.1:6379> get animal "cat" 127.0.0.1:6379> append cat cat (integer) 9 127.0.0.1:6379> get cat "\xe9\x93\x83\xe9\x93\x9bcat" 127.0.0.1:6379> get user1 (nil) 127.0.0.1:6379> delete user1#打错了.... (error) ERR unknown command `delete`, with args beginning with: `user1`, 127.0.0.1:6379> del user1 (integer) 0 127.0.0.1:6379>
- set--设置值
- get--获取值
- mset--设置多个键值对
- mget--获取多个键值对
- append--添加字符串
- del--删除
- incr/decr--给这个数字值加减1(因为是给字符串表示的数字,所以这么设置)
很多情况下会设置user:jhon;age:17 '123445'存储用户信息
过期设置
set cat 铃铛 EX 数字(多少秒之后过期)
- 列表(List)相关操作
:::wanring 本篇的l都可以替换成r,从左操作还是从右操作 :::
- lpush listname a b c d -- 依次放到列表中a,b,c,d
- blpop listname 数量 超时 -- 从列表的左端拿出数量的元素若不够就等待超时时间返回nil/成功返回列表名字和元素的值没有元素就会被删除
- brpoplpush a b timeout --从a的左边拿出一个放到b的右边
- lindex listname 3 -- 从列表中拿出下标为3的元素从1开始数
- llen listname -- 获得列表长度
- lpop listname -- 拿到一个左端元素
- lrange listname 开始 结束-- 从左开始拿开始到结束
- lrem listname 几次 值 -- 把列表中的值移除几次如果设置为1一处过一次就不再移除了
- 集合(Set)相关操作
- sadd setname v v v v v -- 把这些v都添加到集合中去自己就会去重
- sismember setname v --看看这个v在不在这里面
- smembers setname -- 所有的成员
- sdiffer a b -- 返回a和b的差集
- sdifferstort a b c --把b和c的差集保存在a中(会更新a)
- sinter a b --返回a b的交集
- sinterstore a b c --将b和c的交集存在a中
- sunion a b--返回a b的并集
- sunion a b c-- 把b c 的并集放在a中
有序集合
散列(Hash)相关操作
- hmset(Hash many set)hashname k v k v --一次设置多个键-值对,同样可以用hset hashname k v 设置一个
- hmget(Hash many set)hashname k k k --通过多个键一次拿取多个值,同样可以用hget hashname k 拿到一个
- hgetall hashname -- 拿到这个hash的所有映射
- hlen hashname -- 查看长度
- hexists hashname k -- 看看这个k在不在hash中,在就返回1不再返回0
- hkeys hashname --拿到所有的k
- hvals hashname--拿到所有的value
- hsetnx hashname k-- k不存在的时候才设置这个k存在了就不动
- hincrby hashname k value--给k字段(整数)+value
- hincrbyfloat hashname k value --给k字段(浮点)+value
# RabbitMQ
服务无法启动