Redis常用命令

查看當前所有的KEY

KEYS *

KEYS zhang* ? ?#查看前綴為zhang的所有鍵; ?


查看當前redis的配置信息

CONFIG GET *


強制停止redis快照導致redis用戶沒有權限寫rdb文件或磁盤空間滿了,解決方法

config set stop-writes-on-bgsave-error no


清除redis緩存

redis-cli

dbsize

flushall

exit


刪除redis當前數據庫中的所有KEY

flushdb


刪除redis所有數據庫中的KEY

flushall


redis.conf 配置參數詳解

daemonize ?yes ? ?#運行可以守護進程啟動,放置于后臺;

bind:x.x.x.x ? ?#監聽地址,建議只對本地127.0.0.1開放;

protect-mode yes ? ?#redis的保護模式;

requirepass 密碼 ? ?#設置密碼;

timeout 0 ? ?#關閉超時;

tcp-keepalive 0 ? ?#在Linux上,指定值(秒)用于發送ACKs的時間,關閉連接需要雙倍的時間,默認為0;

loglevle notice ? ?#指定日志記錄的級別。有四個級別:debug(記錄很多信息,用于開發測試)、notice(常用與生產環境)、warning(只有非常重要或嚴重的信息才會記錄到日志)、verbose(有用的信息,比debug少);

logfile ?/var/log/redis/redis.log ? ?#默認為stdout;

databases n ? ?#可用數據庫,范圍在0 - (database-1);

save ? ?#保存數據到磁盤(.rdb);

stop-writes-on-bgsave-error yes ? ?#后臺儲存錯誤停止寫;

rdbcompression yes ? ?#儲存到本地數據庫時(持久化到rdb文件)是否壓縮;

dbfilename dump.rdb ? ?#本地持久化數據庫文件名,默認dump.rdb;

dir /var/db/redis/ ? ?#數據庫文件路徑,是目錄;

#主從復制,設置該數據庫主從;

salveof ? ?#設置本機為從庫,設置好master的ip及端口,它會自動從master進行數據同步;

masterauth ? ?#設置主庫認證的密碼;

slave-read-only yes ? ?#設置slave是否接受寫;

slave-serve-stale-data yes ? ?#從庫同主庫失去連接或復制正在進行時,從庫是繼續響應客戶端請求還是否;

repl-disable-tcp-nodelay no ? ?#發送到slave的延遲會降低,但將更過的帶寬用于復制;

slave-priority 100 ? ?#master不能工作后,從眾多slave中選出優先值最小的slave提升為master,優先值為0表示不能為master;

appendonly no ? ?#是否開啟AOF數據備份,redis會把所接收到的每一次寫操作請求都追加到appendonly.aof文件,當此文件很大;

appendsync everysec ? ?#AOF文件同步策略,后臺會進行大量I/O;

no-appendfsync-on-rewrite no ? ?#環境AOF大量I/O;

auto-aof-rewrite-percentage 100 ? ?#aof自動重寫;

auto-aof-rewrite-min-size 64mb ? ?#指定最小大小用于aof重寫;

slowlog-log-slower-than 1000 ? ?#慢日志,記錄超過特定執行時間的命令,不包括I/o;

slowlog-max-len 128 ? ?#slow log的長度,超過大小,最先進入隊列的記錄會被踢出;

hash-max-zipmap-entries 512 ? ?#hash將以一種特殊的編碼方式(大大減少內存使用)來儲存,這是其中一個臨界值;

hash-max-zipmap-value 64 ? ?#另外一個臨界值;

list-max-ziplist-entries 512 ? ?#多個list以特定的方式編碼來節省空間;

list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

activerehashing yes ? ?#Redis將在每100ms時使用1ms的CPU時間來對redis的hash表進行重新hash,可降低內存的使用;

client-output-buffer-limit normal 0 0 0 ? ? #限制輸出緩存;

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10 ? ?#不是所有任務都以相同的頻率執行,但redis按照指定的“hz”值執行檢查任務;

aof-rewrite-incremental-fsync yes ? ?#當一個子節點重寫AOF文件時,則文件每生產32m數據進行同步;


Redis官方文檔對VM的使用建議:

當你的KEY很小二value很大時,使用VM的效果會比較好,因為這樣節約內存比較大;

當key不小時,可以考慮使用一些非常方法將很大的key變成value,比如將key,value組合成一個新的value。


連接操作相關命令

quit:關閉連接;

auth:簡單密碼認證;

help cmd:查看命令幫助;


持久化

save:將數據同步保存到磁盤;

bgsave:將數據異步保存到磁盤;

lastsave:返回上次成功將數據保存到磁盤的Unix時戳;


遠程服務控制

info:提供服務器的信息統計;

monitor:實時轉儲收到的請求;

slaveof:改變復制策略設置;

shundown:將數據同步保存到磁盤,然后關閉服務;


value操作命令

exists(key):判斷一個key是否存在;

del(key):刪除一個key;

type(key):返回值的類型;

keys(pattern):返回滿足給定模式的所有key;

randomkey:隨機返回key空間的一個;

keyrename(oldname,newname):重命名key;

dbsize:返回當前數據庫中key的數目;

expire:設定一個key的活動時間(s);

ttl:獲得一個key的活動時間;

select(index):按索引查詢;

move(key,dbindex):移動當前數據庫中的key到dbindex數據庫;

flushdb:刪除當前選擇的數據庫中的所有key;

flushall:刪除所有數據庫中的所有key;


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 1,value 1,...,key N,value N):批量設置多個string的值;

msetnx(key 1,value 1,...,key N,value N):如果所有名稱為 key N的string都不存在,則向庫中添加string,名稱為 key N賦值value N;

incr(key):名稱為key的string加 1 操作;

incrby(key,integer):名稱為key的string增減integer;

decr(key):名稱為key的string減1操作;

decrby(key,integer):名稱為key的string的值附加value;

append(key,value):名稱為key的值附加value;

substr(key,start,end):返回名稱為key的string的value的子串;


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之間的元素(下表從0開始);

ltrim(key,start,end):截取名稱為key的list,保留start至end之間的元素;

lindex(key,index):返回名稱為key的list中index位置的元素;

lset(key,index,value):給名稱為key的list中index位置的元素賦值value;

lrem(key,count,value):刪除count個名稱為key的list中值為value的元素;

brpop(key1,key2,...,key N):rpop的block版本;

rpoplpush(srckey,dstkey):返回并刪除名為srckey的list尾元素,并將該元素添加到名為dstkey的list的頭部;


set操作的命令

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

srem(key,member):刪除名為key的set中元素的member;

spop(key):隨機返回并刪除名為key的set中的一個元素;

smove(srckey,dstkey,member):將member元素從名為srckey的集合移動到名為dstkey的集合;

scard(key):返回名為key的set的基數;

sismember(key,member):測試member是否是名稱為key的set的集合;

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

sinterstore(dstkey,key1,...,key N):求交集并將交集保存到dstkey的集合;

sunion(key1,...,key N):求并集;

sunionstore(dstkey,key 1,...,key N):求并集并將并集保存到dstkey的集合;

sdiff(key1,...,key N):求差集;

sdiffstore(dstkey,key 1,...,key N):求差集并將差集保存到dstkey的集合;

smembers(key):返回名為key的set的所有元素;

srandmember(key):隨機返回名為key的set的一個元素;


zset(sorted set)操作的命令

zadd(key,score,member):向名為key的zset中添加元素member,score用于排序,如果該元素已經存在,則根據score更新該元素的順序;

zrem(key,member):刪除名為key的zset中的元素member;

zincrby(key,increment,member):如果在名為key的zset中已經存在元素member,則該元素的score增加increment,否則向集合中添加該元素,其score的值為increment;

zrank(key,member):返回名為key的zset,順序;

zrevrank(key,member):返回名為key的zset,倒序;

zrange(key,start,end):返回名為key的zset,score順序按index從start到end返回所有元素;

zrevrange(key,start,end):返回名為key的zset,score倒序按index從start到end返回所有元素;

zrangebyscore(key,min,max):返回名為key的zset中score大于等于min,小于等于max的所有元素;


hash操作命令

hset(key,field,value):向名為key的hash中添加元素filed----value;

hget(key,field):返回名為key的hash中field對應的value;

hmset(key,field1,value1,...,field N,value N):向名為key的hash中添加元素field----value;

hmget(key,field1,...,field N):返回名為key的hash中filed對應的value;

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;



Redis高級應用


安全性

設置客戶端連接后進行操作需要密碼;

requirepass password;

redis-cli -a password 或者 進入后 auth password


主從復制

通過主從復制可以允許多個 slave 擁有和 master 相同的數據庫副本;注意一下防火墻問題;

slaveof ?IP ?port;

masterauth password;


事務處理

redis對事務的支持還比較簡單;

redis只能保證一個client發起的事務中的命令可以連續執行,而中間不會插入其他的client的命令;

當一個client在一個連接中發出multi命令時,這個連接會進入一個事務的上下文,連接后續命令不會不及執行,而是先放到一個隊列中,當執行exec命令時,redis會順序的執行隊列中的所有命令;


持久化機制

redis持久化就是把數據從內存保存到硬盤;

redis是一個支持持久化的內存數據庫;

snapshotting快照,默認的儲存方式寫入dump.rdb的二進制文件中,可以配置redis在 n秒內如果超過 m個key被修改就自動做快照;

appendonly file,aof方式redis會將每一次的函數都追加到文件中,當redis重啟時會重新執行文件中保存的命令;



虛擬內存的使用

配置 VM 功能,保存路徑,最大內存上線,頁面多少,頁面大小,最大工作線程;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。