mongodb安裝
docker pull mongo:latest
docker run -itd --name mongo -p 27017:27017 mongo --auth
參數說明:
-p 27017:27017 :映射容器服務的 27017 端口到宿主機的 27017 端口。外部可以直接通過 宿主機 ip:27017 訪問到 mongo 的服務。
--auth:需要密碼才能訪問容器服務。
可選將數據放在宿主機器上還是放在容器內
-v /data/mongo:/data/db
docker exec -it mongo mongo admin
創建一個名為 admin,密碼為 123456 的用戶。
db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
嘗試使用上面創建的用戶信息進行連接。
db.auth('admin', '123456')
mongodb常用命令
插入數據
db.table.insert( {'name':'demo','sex':'m','age':18} );
查詢數據
db.table.find();
$lt(小于),$lte(小于等于),$gt(大于),$gte(大于等于),$ne(不等于)
db.table.find( {'age':{ '$lt':19 } } )
排序
db.table.find().sort( {'age':1} )
1 表示升序 -1 表示降序
分頁
db.table.find().limit(10).skip(20);
( skip 規定忽略幾個,上述查詢類似mysql中的 limit 20,10 )
查詢統計
db.table.count();
db.table.find( {'age':{'$lt':19} } ).count()
刪除數據
db.table.remove();//刪除全部
db.table.remove( {'id':123} );//刪除指定數據
更新數據
db.table.update( {'id':123},{'age':25} )
// 查找id為123的數據,將其age字段更新為25
do.table.update( {'id':123} , {'age':22} ,true );
// 類似于mysql的 replace用法 存在則更新,不存在則添加
索引
db.table.ensureIndex({'id':1})// 創建索引
db.table.dropIndex({'id':1})// 刪除索引
db.table.ensureIndex({'id':1},{unique:true}); // 獨立索引
db.table.ensureIndex({'id':1,'age':1})// 聯合索引
db.table.ensureIndex( { loc : "2dsphere" } )//空間索引
備份(使用 mongodump.exe 備份數據)
mongodump.exe -d learn -o backup (備份整個 learn 數據庫)
mongodump.exe -d learn -c test -o backup (備份單獨的表)
( -d 數據庫 -c 數據表 -o 備份目錄)
恢復數據庫( 使用 mongorestore.exe 恢復)
mongorestore.exe -d lear -c test backup/learn/unicorns.bson
( -d 數據庫 -c 數據表 )
導出數據
mongoexport.exe -d test -c mapinfo -o export.dat( 導出數據為json格式數據,默認格式 )
( -d 數據庫 -c 表 -o 導出文件名)
mongoexport.exe -d test -c mapinfo --csv -f id,name -o csv.csv (導出數據為csv格式數據)
( -d 數據庫 -c 表 --csv 導出為csv格式 -f 導出字段名 -o 導出文件名)
導入數據
mongoimport.exe -d test -c mapinfo mapinfo.dat (導入 json 格式數據 ,默認格式)
(-d 數據庫 -c 表 數據源)
mongoimport.exe -d test -c mapinfo --type csv --headerline --file csv.csv (導入csv格式數據)
( -d 數據庫 -c 表 --type 類型 --headerline 不導入第一行 --file 數據源)
redis安裝
docker pull redis:latest
當前目錄下創建redis文件夾
redis目錄下創建 redis.conf
填寫配置信息:
#修改為守護模式
daemonize yes
#設置進程鎖文件
pidfile redis/redis.pid
#端口
port 6379
#客戶端超時時間
timeout 300
#日志級別
loglevel debug
#日志文件位置
logfile redis/log-redis.log
#設置數據庫的數量,默認數據庫為0,可以使用SELECT <dbid>命令在連接上指定數據庫id
databases 8
##指定在多長時間內,有多少次更新操作,就將數據同步到數據文件,可以多個條件配合
#save <seconds> <changes>
#Redis默認配置文件中提供了三個條件:
save 900 1
save 300 10
save 60 10000
#指定存儲至本地數據庫時是否壓縮數據,默認為yes,Redis采用LZF壓縮,如果為了節省CPU時間,
#可以關閉該#選項,但會導致數據庫文件變的巨大
rdbcompression yes
#指定本地數據庫文件名
dbfilename dump.rdb
#指定本地數據庫路徑
dir redis/db/
#指定是否在每次更新操作后進行日志記錄,Redis在默認情況下是異步的把數據寫入磁盤,如果不開啟,可能
#會在斷電時導致一段時間內的數據丟失。因為 redis本身同步數據文件是按上面save條件來同步的,所以有
#的數據會在一段時間內只存在于內存中
appendonly no
#指定更新日志條件,共有3個可選值:
#no:表示等操作系統進行數據緩存同步到磁盤(快)
#always:表示每次更新操作后手動調用fsync()將數據寫到磁盤(慢,安全)
#everysec:表示每秒同步一次(折衷,默認值)
appendfsync everysec
#redis配置外網訪問:
protected-mode no
#配置密碼
requirepass root
運行容器
docker run -p 6379:6379 --name redis -v $PWD/redis.conf:/root/redis/redis.conf -v $PWD/data:/root/redis/data -d redis redis-server
進入容器并開啟客戶端查看redis信息
docker exec -it myredis redis-cli
redis常用命令
key
keys * 獲取所有的key
select 0 選擇第一個庫
move myString 1 將當前的數據庫key移動到某個數據庫,目標庫有,則不能移動
flush db 清除指定庫
randomkey 隨機key
type key 類型
set key1 value1 設置key
get key1 獲取key
mset key1 value1 key2 value2 key3 value3
mget key1 key2 key3
del key1 刪除key
exists key 判斷是否存在key
expire key 10 10過期
pexpire key 1000 毫秒
persist key 刪除過期時間
string
set name cxx
get name
getrange name 0 -1 字符串分段
getset name new_cxx 設置值,返回舊值
mset key1 key2 批量設置
mget key1 key2 批量獲取
setnx key value 不存在就插入(not exists)
setex key time value 過期時間(expire)
setrange key index value 從index開始替換value
incr age 遞增
incrby age 10 遞增
decr age 遞減
decrby age 10 遞減
incrbyfloat 增減浮點數
append 追加
strlen 長度
getbit/setbit/bitcount/bitop 位操作
hash
hset myhash name cxx
hget myhash name
hmset myhash name cxx age 25 note "i am notes"
hmget myhash name age note
hgetall myhash 獲取所有的
hexists myhash name 是否存在
hsetnx myhash score 100 設置不存在的
hincrby myhash id 1 遞增
hdel myhash name 刪除
hkeys myhash 只取key
hvals myhash 只取value
hlen myhash 長度
list
lpush mylist a b c 左插入
rpush mylist x y z 右插入
lrange mylist 0 -1 數據集合
lpop mylist 彈出元素
rpop mylist 彈出元素
llen mylist 長度
lrem mylist count value 刪除
lindex mylist 2 指定索引的值
lset mylist 2 n 索引設值
ltrim mylist 0 4 刪除key
linsert mylist before a 插入
linsert mylist after a 插入
rpoplpush list list2 轉移列表的數據
set
sadd myset redis
smembers myset 數據集合
srem myset set1 刪除
sismember myset set1 判斷元素是否在集合中
scard key_name 個數
sdiff | sinter | sunion 操作:集合間運算:差集 | 交集 | 并集
srandmember 隨機獲取集合中的元素
spop 從集合中彈出一個元素
zset
zadd zset 1 one
zadd zset 2 two
zadd zset 3 three
zincrby zset 1 one 增長分數
zscore zset two 獲取分數
zrange zset 0 -1 withscores 范圍值
zrangebyscore zset 10 25 withscores 指定范圍的值
zrangebyscore zset 10 25 withscores limit 1 2 分頁
Zrevrangebyscore zset 10 25 withscores 指定范圍的值
zcard zset 元素數量
Zcount zset 獲得指定分數范圍內的元素個數
Zrem zset one two 刪除一個或多個元素
Zremrangebyrank zset 0 1 按照排名范圍刪除元素
Zremrangebyscore zset 0 1 按照分數范圍刪除元素
Zrank zset 0 -1 分數最小的元素排名為0
Zrevrank zset 0 -1 分數最大的元素排名為0
Zinterstore
zunionstore rank:last_week 7 rank:20150323 rank:20150324 rank:20150325 weights 1 1 1 1 1 1 1
排序:
sort mylist 排序
sort mylist alpha desc limit 0 2 字母排序
sort list by it:* desc by命令
sort list by it:* desc get it:* get參數
sort list by it:* desc get it:* store sorc:result sort命令之store參數:表示把sort查詢的結果集保存起來
訂閱與發布:
訂閱頻道:subscribe chat1
發布消息:publish chat1 "hell0 ni hao"
查看頻道:pubsub channels
查看某個頻道的訂閱者數量: pubsub numsub chat1
退訂指定頻道: unsubscrible chat1 , punsubscribe java.*
訂閱一組頻道: psubscribe java.*
redis事物:
隔離性,原子性,
步驟: 開始事務,執行命令,提交事務
multi //開啟事務
sadd myset a b c
sadd myset e f g
lpush mylist aa bb cc
lpush mylist dd ff gg
服務器管理
dump.rdb
appendonly.aof
//BgRewriteAof 異步執行一個aop(appendOnly file)文件重寫
會創建當前一個AOF文件體積的優化版本
//BgSave 后臺異步保存數據到磁盤,會在當前目錄下創建文件dump.rdb
//save同步保存數據到磁盤,會阻塞主進程,別的客戶端無法連接
//client kill 關閉客戶端連接
//client list 列出所有的客戶端
//給客戶端設置一個名稱
client setname myclient1
client getname
config get port
//configRewrite 對redis的配置文件進行改寫
rdb
save 900 1
save 300 10
save 60 10000
aop備份處理
appendonly yes 開啟持久化
appendfsync everysec 每秒備份一次
命令:
bgsave異步保存數據到磁盤(快照保存)
lastsave返回上次成功保存到磁盤的unix的時間戳
shutdown同步保存到服務器并關閉redis服務器
bgrewriteaof文件壓縮處理(命令)
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。