大数据NOSQL,使用Redis常用命令 使用MongoDB常用命令
一、MongoDB命令帮助
在安装MongoDB后,启动服务器进程(mongod),可以通过在客户端命令mongo实现对MongoDB的管理和监控:
这是MongoDB最上层的命令列表,主要是管理数据库的:数据库操作帮助、集合操作帮助、管理帮助。如果想了解数据库操作更详细的命令,可以直接使用db.help(),如下所示:
二、基本命令
1、show dbs
显示当前数据库服务器上的数据库
2、use pagedb
切换到指定数据库pagedb的上下文,可以在此上下文中管理pagedb数据库以及其中的集合等
3、show collections
显示数据库中所有的集合(collection)
4、db.serverStatus()
查看数据库服务器的状态。
5、查询指定数据库统计信息
use myDatabase
db.stats()
6、查询指定数据库包含的集合名称列表
三、基本DDL和DML
3.1 数据库操作
切换、创建数据库 use yourDB
查询所有数据库 show dbs
删除当前使用数据库 db.dropDatabase()
从指定主机上克隆数据库 db.cloneDatabase(“127.0.0.1”)
从指定的机器复制数据库数据到某个数据库 db.copyDatabase(“mydb”,“temp”,“127.0.0.1”)
修复数据库 db.repairDatabase()
查看当前使用的数据库 db.getName或db
显示当前数据库状态 db.stats()
当前db版本 db.version()
查看当前数据库机器地址 db.getMongo()
3.2 集合操作
创建集合 db.createCollection(‘collName’,{size:20,capped:5,max:100}) 创建成功会显示{“ok”:1}
得到指定名称的集合 db.getCollection(“account”)
得到当前数据库所有集合 db.getCollectionNames()
得到当前数据库所有集合索引的状态 db.printCollectionStats()
3.3 用户相关
添加用户 db.addUser(“name”)和db.addUser(“userName”,“pwd123”,true) 设置密码、是否只读
数据库认证 db.auth(“userName”,“123123”)
显示当前所用用户 show users
删除用户 db.removeUser(“userName”)
3.4 集合查询
查询所用记录 db.userInfo.find() 默认每页显示20条记录
查询去掉后的当前集合中的某列的重复数据 db.userInfo.disinct(“name”)
等于 db.userInfo.find({“gae”:22}) 查询age==22的集合
大于 db.userInfo.find({“age”:{KaTeX parse error: Expected 'EOF', got '}' at position 6: gt:22}̲})
小于 db.user…lt:22}})
包含 db.userInfo.find({name:/mongo/})
开头 db.userInfo.find({name:/^mongo/})
查询指定列name、age db.userInfo.find({},{name:1,age:1})
查询指定数据 db.userInfo.find({age:{KaTeX parse error: Expected 'EOF', got '}' at position 5: gt25}̲},{name:1,age:1…or:[{age:22},{age:25}]})
查询第一条数据 db.userInfo.findOne()
查询集合的条数 db.userInfo.find().count()
按某列进行排序 db…find({sex:{$exists:true}}).count()
group db.userInfo.group({“key”: {“age”: true},“initial”: {“user”: []},reduce": function(cur,prev){prev.user.push(cur.name);}
参数选项:
1.key: 这个就是分组的key 2.initial: 每组都分享一个初始化函数,特别注意:是每一组initial函数。 3.reduce: 这个函数的第一个参数是当前的文档对象,第二个参数是上一次function操作的累计对象。有多少个文档, $reduce就会调用多少次。 4.condition: 这个就是过滤条件。 5.finalize: 这是个函数,每一组文档执行完后,多会触发此方法。
3.5 索引
添加索引 db.users.ensureIndex({“name”:1}) ensureIndex方法参数中,数字1表示升序,-1表示降序。
唯一索引 db.users.ensureIndex({“name”:1},{“unique”:true})
组合索引 db.users.ensureIndex({“name”:1, “age”:-1})
查看索引 db.users.getIndexes()
查询索引 db.users.find({“name”:“k”}).hint({“name”:1,“age”:1})
删除索引 db.users.dropIndexes()
删除指定索引 db.users.dropIndex(“name_1”)
NoSQL 数据库Redis使用命令简介
数据模型分成4类:
1.键-值对存储库(Key-Value)
redis……
2.BigTable实现(BigTable-implementations)
HBase
3.文档库(Document-stores)
mongo DB
4.图形数据库(Graph Database)
代表: Neo4j
Redis 操作简介
服务启动
redis服务启动命令: redis-server /usr/local/etc/redis.conf
redis服务启动后,可以使用redis 客户端操作访问redis了: redis-cli
配置查看
查看配置项命令: CONFIG GET
在客户端命令模式下,输入config get * 可以看到redis服务所有的配置。
redis库
redis服务缺省有16个库,从db0到db15,使用select 可以选择指定的库。
redis key
Redis的key和支持的数据类型及其操作
keys
redis本质上一个key-value db,所以我们首先来看看他的key.首先key也是字符串类型,但是key中不能包括边界字符
由于key不是binary safe的字符串,所以像”my key”和”mykey\n”这样包含空格和换行的key是不允许的
顺便说一下在redis内部并不限制使用binary字符,这是redis协议限制的。”\r\n”在协议格式中会作为特殊字符。
redis 1.2以后的协议中部分命令已经开始使用新的协议格式了(比如MSET)。
关于key的一个格式约定介绍下,object-type????field。比如user:1000:password,blog:xxidxx:title
还有key的长度最好不要太长。道理很明显占内存啊,而且查找时候相对短key也更慢。不过也推荐过短的key,
比如u:1000:pwd,这样的。显然没上面的user:1000:password可读性好。
key相关操作命令
下面介绍下key相关的命令
1 DEL key 该命令用于在 key 存在是删除 key。
2 DUMP key 序列化给定 key ,并返回被序列化的值。
3 EXISTS key 检查给定 key 是否存在。
4 EXPIRE key seconds 为给定 key 设置过期时间。
5 EXPIREAT key timestamp EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。
6 PEXPIRE key milliseconds 设置 key 的过期时间亿以毫秒计。
7 PEXPIREAT key milliseconds-timestamp 设置 key 过期时间的时间戳(unix timestamp) 以毫秒计
8 KEYS pattern 查找所有符合给定模式( pattern)的 key 。
9 MOVE key db 将当前数据库的 key 移动到给定的数据库 db 当中。
10 PERSIST key 移除 key 的过期时间,key 将持久保持。
11 PTTL key 以毫秒为单位返回 key 的剩余的过期时间。
12 TTL key 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
13 RANDOMKEY 从当前数据库中随机返回一个 key 。
14 RENAME key newkey 修改 key 的名称
15 RENAMENX key newkey 仅当 newkey 不存在时,将 key 改名为 newkey 。
16 TYPE key 返回 key 所储存的值的类型。
del key1 key2 ….keyN 删除给定key,返回删除key的数目,0表示给定key都不存在
type key 返回给定key的value类型。返回 none 表示不存在key,string字符类型,list 链表类型 set 无序集合类型…redis> set testa dsf
OK
redis> set testb dsaf
OK
redis> set testc dff
OK
redis> keys t*
- “testb”
- “testc”
- “testa”
redis> keys test[ab] - “testb”
- “testa”
redis> keys test* - “testb”
- “testc”
- “testa”
redis> keys * - “testb”
- “testa”
- “intval”
- “abc”
- “testc”
dbsize 返回当前数据库的key数量
select db-index 通过索引选择数据库,默认连接的数据库所有是0,默认数据库数是16个。返回1表示成功,0失败
rename oldkey newkey 原子的重命名一个key,如果newkey存在,将会被覆盖,返回1表示成功,0失败。可能是oldkey不存在或者和newkey相同
renamenx oldkey newkey 同上,但是如果newkey存在返回失败
expire key seconds 为key指定过期时间,单位是秒。返回1成功,0表示key已经设置过过期时间或者不存在
ttl key 返回设置过过期时间的key的剩余过期秒数 -1表示key不存在或者没有设置过过期时间
move key db-index 将key从当前数据库移动到指定数据库。返回1成功。0 如果key不存在,或者已经在指定数据库中redis> keys a*
- “abc”
- “acc”
redis> move acc 1
(integer) 1
flushdb 删除 当前数据库中所有key,此方法不会失败。慎用
flushall 删除 所有数据库中的所有key,此方法不会失败。更加慎用
Redis支持的数据类型及其操作
数据类型
Redis支持五种类型的数据结构:
字符串 (String) 有序集合 (ZSet) 集合 (Set) 哈希 (Hash) 列表 (List)
String(字符串)
string是redis最基本的类型,string类型是二进制安全的。意思是redis的string可以包含任何数据。
比如jpg图片或者序列化的对象 。string类型是Redis最基本的数据类型,一个键最大能存储512MB。
Hash(哈希)
每个 hash 可以存储 2^32 - 1 键值对(40多亿)。在Redis里,hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
所以,redis的hash对应了java、C#等语言里的map。
List(列表)
Redis 的 list 类型其实就是一个每个子元素都是string类型的双向链表。你可以将 元素添加到列表的头和尾。
set(集合)
Redis的set是string类型的无序集合。set的是通过hash table实现的,所以添加,删除,查找的复杂度都是O(1)。
zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的score。
redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
List
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边).
一个列表最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
Redis的列表操作命令大多以L开头,代表List。
列表命令
下表列出了列表相关的基本命令:
B – Block, L – first, R – last
序号 命令及描述
1 BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞(block)列表直到等待超时或发现可弹出元素为止。
2 BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
3 BRPOPLPUSH source destination timeout 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
4 LINDEX key index 通过索引获取列表中的元素
5 LINSERT key BEFORE|AFTER pivot value 在列表的元素前或者后插入元素
6 LLEN key 获取列表长度
7 LPOP key 移出并获取列表的第一个元素
8 LPUSH key value1 [value2] 将一个或多个值插入到列表头部
9 LPUSHX key value 将一个或多个值插入到已存在的列表头部
10 LRANGE key start stop 获取列表指定范围内的元素
11 LREM key count value 移除列表元素
12 LSET key index value 通过索引设置列表元素的值
13 LTRIM key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
14 RPOP key 移除并获取列表最后一个元素
15 RPOPLPUSH source destination 移除列表的最后一个元素,并将该元素添加到另一个列表并返回
16 RPUSH key value1 [value2] 在列表中添加一个或多个值
17 RPUSHX key value 为已存在的列表添加值
Redis 集合命令
下表列出了 Redis 集合基本命令:集合的命令以S开头,表示Set.
序号 命令及描述
1 SADD key member1 [member2] 向集合添加一个或多个成员
2 SCARD key 获取集合的成员数
3 SDIFF key1 [key2] 返回给定所有集合的差集
4 SDIFFSTORE destination key1 [key2] 返回给定所有集合的差集并存储在 destination 中
5 SINTER key1 [key2] 返回给定所有集合的交集
6 SINTERSTORE destination key1 [key2] 返回给定所有集合的交集并存储在 destination 中
7 SISMEMBER key member 判断 member 元素是否是集合 key 的成员
8 SMEMBERS key 返回集合中的所有成员
9 SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合
10 SPOP key 移除并返回集合中的一个随机元素
11 SRANDMEMBER key [count] 返回集合中一个或多个随机数
12 SREM key member1 [member2] 移除集合中一个或多个成员
13 SUNION key1 [key2] 返回所有给定集合的并集
14 SUNIONSTORE destination key1 [key2] 所有给定集合的并集存储在 destination 集合中
15 SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素
关闭服务
使用shutdown命令来关闭服务。
或者在telnet连接后,输入shutdown命令关闭服务。