当前位置:   article > 正文

Cassandra+mongo+redis数据库常用命令_停止cassandra

停止cassandra

1. cassandra数据库

1.1. MAC 下安装 cassandra

1.1.1. 更新自制软件的存储库索引

–为了在Mac OS上安装Cassandra, 需要更新自制软件的存储库索引。

brew update 
  • 1

1.1.2. 在MacOS上安装Cassandra

–在MacOS上安装Cassandra,会将Cassandra安装在/usr/local/cellar/cassandra位置

brew install cassandra
  • 1

1.1.3. 启动cassandra

以下命令用于启动Cassandra(本地)。

brew services start cassandra
  • 1

1.1.4. 停止cassandra

以下命令用于停止Cassandra (本地)。

brew services stop cassandra
  • 1

1.2. shell命令

1.2.1. 连接数据库

命令格式:

cqlsh -u username -p password -k keyspaces  ip地址
  • 1

说明:

username:用户名

password:密码

keyspaces:表空间

control+z 关闭连接快捷键

1.2.2. 查看集群的信息

describe clusters ; 
  • 1

—此命令提供有关集群的信息

1.2.3. 列出集群中的所有键空间

此命令列出集群中的所有键空间

describe keyspaces;
  • 1

切换键空间

use keyspace;
  • 1

1.2.4. 列出了键空间中的所有表

此命令列出了键空间中的所有表

describe tables;
  • 1

此命令提供表的描述

describe table 表名称;
  • 1

1.3. CURD操作

---------CURD操作---------

CQL ( Cloud Query Language)是 LeanCloud 为查询 API 定制的一套类似 SQL 查询语法的子集和变种,其目的是让开发者可以使用传统的 SQL 语法来查询。

----查询限制-----

1.主键顺序查询限制

Cassandra对查询的支持很弱,只支持主键列及索引列的查询,而且主键列还有各种限制,不过查询弱归弱,但它还是支持索引和排序的。

索引列支持 like

只有主键支持 group by

cassandra主键是一个partition key主键和多个clustering key复合主键,而主键的查询顺序必须与定义表结构时一致

分区主键查询限制
​cassandra中分区主键只能以 等号或in查询,不能使用范围查询

也就是不能以日期进行范围查询

2.范围主键查询限制

​ cassandra中范围查询只能放在条件查询的最后一个位置,例如,如果范围查询age,则就不能添加phone查询条件。加上ALLOW FILTERING(允许过滤) 可以支持

3.排序规则

​ cassandra在创建表时设置一个排序规则,默认以此进行规则排序,如当前表,默认以正序age,正序bornDate和倒序createDate, 手动设置倒序只有一种方式,即将所有排序字段全部颠倒,也就是必须像这样order by age desc, bornDate desc, createDate asc

4.排序对分区主键条件的限制

​ cassandra中只要使用排序,无论是使用默认排序规则还是相反排序规则,分区主键只能使用等于查询,(可以使用in,但是只能IN一个数据)

6.使用In和Order by 时需要全局关闭分页

Cluster.Builder()

.AddContactPoints(cassandraUrls)

//      设置pageSize为最大值,这样代表为关闭分页,可以使用in 和order by

.WithQueryOptions(new QueryOptions().SetPageSize(int.MaxValue))

.Build();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

1.3.1. 新增操作

命令格式:

INSERT INTO <tablename> (<column1 name>, <column2 name>....) VALUES (<value1>, <value2>....) USING <option>
  • 1

1.3.2. 更新数据

UPDATE <tablename> SET <column name> = <new value> <column name> = <value>.... WHERE <condition>
  • 1

1.3.3. 查询数据

SELECT FROM <table name> WHERE <condition>;
  • 1

示例: select * from employee; —读取所有字断

1)主键顺序查询限制

–错误示范(违反主键顺序查询限制)

select * from employee where age = 1 and name = '张三' and bornDate='1999-01-01';
  • 1

–正确写法

select * from employee where bornDate = '1999-01-01' and name ='张三' and age=1; 
  • 1
2)分区主键查询限制

–错误示范(违反分区主键查询限制)

select * from employee where  bornDate >='1999-01-01' and name='张三'; 
  • 1

–正确写法

select * from employee where bornDate = '1999-01-01' and name ='张三' and age=1; 
  • 1
3)范围主键查询限制

–错误示范(违反范围主键查询限制)

select * from employee where bornDate = '2019-01-01' and name ='张三' and age >18 and phone = '123456';
  • 1

–正确写法

select * from employee where bornDate = '2019-01-01' and name ='张三' and age >18 and phone = '123456'  allow filtering; 
  • 1
4)排序规则 默认排序规则如果需要倒叙则所有原定排序要倒序
5)排序对分区主键条件的限制分区主键只能使用等于查询,(可以使用in,但是只能IN一个数据)

–错误示范

select * from employee where bornDate in ('1999-01-01','1999-01-02') and name = '张三' order by  age desc, bornDate desc, createDate asc;
  • 1

–正确写法

select * from employee where bornDate = '1999-01-01'  and name = '张三' order by  age desc, bornDate desc, createDate asc;
  • 1

EXPAND ON;—扩展命令,使用命令后select输出的结果展示形式不一样,当列较多时可以使用优化数据展现形式

copy users(id, username, age) to ‘D:\myfile’; —复制命令copy to, 将表中的数据写入到文件中

1.3.4. 删除数据

DELETE FROM WHERE ;

1.3.5. 与SQL注要差异

  • 不支持在 select 中使用 as 关键字为列增加别名。
  • update 和 delete 不提供批量更新和删除,只能根据 objectId(where objectId=xxx)和其他条件来更新或者删除某个文档。
  • 不支持 join,关联查询提供 include、relatedTo 等语法来替代(关系查询)。
  • 仅支持部分 SQL 函数(内置函数)。
  • 不支持 group by、having、max、min、sum、distinct 等分组聚合查询语法。
  • 不支持事务。
  • 不支持锁

2. mongodb数据库

2.1. 安装

2.1.1. 使用OSX的brew来安装mongodb

brew tap mongodb

brew install mongodb-community@4.4
  • 1
  • 2
  • 3

@ 符号后面的 4.4 是版本号。

安装信息:

配置文件:/usr/local/etc/mongod.conf
日志文件路径:/usr/local/var/log/mongodb
数据存放路径:/usr/local/var/mongodb

2.1.2. 运行 MongoDB

使用 brew 命令或 mongod 命令来启动服务。

brew 启动:

brew services start mongodb-community@4.4
  • 1

brew 停止:

brew services stop mongodb-community@4.4
  • 1

2.1.3. mongod 命令后台进程方式

mongod --config /usr/local/etc/mongod.conf --fork
  • 1

2.2. SHELL命令

2.2.1. 连接数据库

mongo --host mongodb://username:password@ip:port/database   (control+z 关闭连接(mac))
  • 1

说明:

mongo:指令关键字

–host mongodb://:连接数据库关键字

username:用户名

password:密码

@ip:IP地址

port:端口号

database:数据库名称

2.2.2. 显示数据库列表

show dbs;
  • 1

2.2.3. 切换/创建数据库

use yourDB;当创建一个集合(table)的时候会自动创建当前数据库

2.2.4. 显示当前数据库中的集合

show collections;
  • 1

显示当前数据库中的集合(类似关系数据库中的表)

CURD操作

新增数据

db.user.insert({"userId" : "014","uclass" : "B","name" : "Back","age" : 11,"email" : "b14@sina.com","birthday" : ISODate("2018-07-31T03:46:13.885Z"),"dataStatus" : 1});
  • 1

删除数据

db.user.remove({"userId":"014"});
  • 1

修改数据

db.user.update({"userId":"013"}, {$set:{"email":"b13@sina.com", "age":20}});
  • 1

查询数据

查询所有:db.user.find({});

查询条件=:db.user.find({"uclass":"A"});

查询条件like:db.user.find({"name":/Ba/});

查询条件distinct:db.user.distinct("name");

查询条件>:db.user.find({"age":{$gt:16}});

查询条件>=:db.user.find({"age":{$gte:16}});

查询条件<:db.user.find({"age":{$lt:16}});

查询条件<=:db.user.find({"age":{$lte:16}});

查询条件!=:db.user.find({"age":{$ne:16}});

查询条件=:db.user.find({"age":{$eq:16}});等效于 db.user.find({"age":16});

查询条件in:db.user.find({"uclass":{$in:['A', 'B']}});

查询条件and:db.user.find({"uclass":"B", "age":{$gt:16}});

查询条件or:db.user.find({$or:[{"uclass":"A"},{"class":"B"}]});

查询条件:时间 db.user.find({"birthday":{$gt: new Date("2008-08-14T06:24:40.110Z"), $lt: new Date("2015-08-14T06:14:40.089Z")}});

查询条数count: db.user.find({"uclass":"A"}).count(); 类似mysql select count(1) from user where uclass = 'A';

查询条件sort升序: db.user.find({}).sort({"age":1});

查询条件sort降序: db.user.find({}).sort({"age":-1});

聚合查询count单列:db.user.aggregate([{$group:{_id:"$uclass",num:{$sum:1}}}]);类似MySQL select uclass, count(1) as num from user group by uclass;

聚合查询count多列 :db.user.aggregate([{$group:{_id:{uclass:"$uclass", age:"$age"},num:{$sum:1}}}]);类似MySQL select uclass, age, count(1) as num from user group by uclass, age;

分页查询limit n: db.user.find({}).limit(5); 查询前n条

分页查询limit m,n: db.user.find({}).limit(5).skip(5); 查询n条,从第m条开始

查询指定字段 db.user.find({}, {userId:1, name:1}); 第一个{}为查询条件

查询嵌套数据的指定字段 db.user.find({}, {userId:1, name:1, 'ecus.name':1,  'ecus.serial':1}); ---其中ecus为嵌套列表,name和serial为嵌套字段

排查指定字段 db.user.find({}, {dataStatus:0, _id:0});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

其它操作

—简易模式

db.tablenName.find().pretty(); 
  • 1

从指定主机上克隆数据库

db.cloneDatabase(“127.0.0.1”); 
  • 1

3. redis数据库

3.1. 安装

brew install redis 安装

3.2. 操作命令

命令格式:命令+空格+key+空格+参数1+空格+参数2

注意事项:

1.key以及参数需要加""

2.参数间以空格做分割

示例:

hmget “keyname” “value1” “value2”

3.2.1. 连接操作命令

quit:关闭连接(connection)

auth:简单密码认证

help cmd: 查看cmd帮助

3.2.2. 持久化

save:将数据同步保存到磁盘

bgsave:将数据异步保存到磁盘

lastsave:返回上次成功将数据保存到磁盘的Unix时戳

shundown:将数据同步保存到磁盘,然后关闭服务
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.2.3. 远程服务控制

info:提供服务器的信息和统计

monitor:实时转储收到的请求

slaveof:改变复制策略设置

config:在运行时配置Redis服务器
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.2.4. 对value操作的命令

exists(key):确认一个key是否存在

del(key):删除一个key

type(key):返回值的类型

keys(pattern):返回满足给定pattern的所有key

randomkey:随机返回key空间的一个key

rename(oldname, newname):重命名key

dbsize:返回当前数据库中key的数目

expire:设定一个key的活动时间(s)

ttl:获得一个key的活动时间 (当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。)

select(index):按索引查询

move(key, dbindex):移动当前数据库中的key到dbindex数据库

flushdb:删除当前选择数据库中的所有key

flushall:删除所有数据库中的所有key
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

3.2.5. String

set(key, value):给数据库中名称为key的string赋予值value

get(key):返回数据库中名称为key的string的value

getset(key, value):给名称为key的string赋予上一次的value

mget(key1, key2,…, key N):返回库中多个string的value

setnx(key, value):添加string,名称为key,值为value

setex(key, time, value):向库中添加string,设定过期时间time

mset(key N, value N):批量设置多个string的值

msetnx(key N, value N):如果所有名称为key i的string都不存在

incr(key):名称为key的string增1操作

incrby(key, integer):名称为key的string增加integer

decr(key):名称为key的string减1操作

decrby(key, integer):名称为key的string减少integer

append(key, value):名称为key的string的值附加value

substr(key, start, end):返回名称为key的string的value的子串

### 3.2.6. List
rpush(key, value):在名称为key的list尾添加一个值为value的元素

lpush(key, value):在名称为key的list头添加一个值为value的 元素

llen(key):返回名称为key的list的长度

lrange(key, start, end):返回名称为key的list中start至end之间的元素

ltrim(key, start, end):截取名称为key的list

lindex(key, index):返回名称为key的list中index位置的元素

lset(key, index, value):给名称为key的list中index位置的元素赋值

lrem(key, count, value):删除count个key的list中值为value的元素

lpop(key):返回并删除名称为key的list中的首元素

rpop(key):返回并删除名称为key的list中的尾元素

blpop(key1, key2,… key N, timeout):lpop命令的block版本。

brpop(key1, key2,… key N, timeout):rpop的block版本。

rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

3.2.7. Set

sadd(key, member):向名称为key的set中添加元素

membersrem(key, member) :删除名称为key的set中的元素

memberspop(key) :随机返回并删除名称为key的set中一个元素

smove(srckey, dstkey, member) :移到集合元素

scard(key) :返回名称为key的set的基数

sismember(key, member) :member是否是名称为key的set的元素

sinter(key1, key2,…key N) :求交集

sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合

sunion(key1, (keys)) :求并集

sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合

sdiff(key1, (keys)) :求差集

sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合

smembers(key) :返回名称为key的set的所有元素

srandmember(key) :随机返回名称为key的set的一个元素
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

3.2.8. Hash

hset(key, field, value):向名称为key的hash中添加元素

fieldhget(key, field):返回名称为key的hash中field对应的value

hmget(key, (fields)):返回名称为key的hash中field i对应的value

hmset(key, (fields)):向名称为key的hash中添加元素field

hincrby(key, field, integer):将名称为key的hash中field的value增加integer

hexists(key, field):名称为key的hash中是否存在键为field的域

hdel(key, field):删除名称为key的hash中键为field的域

hlen(key):返回名称为key的hash中元素个数

hkeys(key):返回名称为key的hash中所有键

hvals(key):返回名称为key的hash中所有键对应的value

hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/126324
推荐阅读
相关标签
  

闽ICP备14008679号