《redis 個人使用總結》要點:
本文介紹了redis 個人使用總結,希望對您有用。如果有疑問,可以聯(lián)系我們。
1、對比關系型數(shù)據(jù)庫,我們對redis key的設計一般有以下兩種格式:
表名:主鍵名:主鍵值:列名
表名:主鍵值:列名 在所有主鍵名都是id的情況下(其實我個人不喜歡這種情況,好比user表,它的主鍵名就應該是user_id,而不是id,這樣在表與表之間關聯(lián)的時候一目了然)
2、redis中事務只支持隔離和一致,不支持原子和持久.所以可以保證批量命令的執(zhí)行,但無法保證數(shù)據(jù)完整性.
3、redis是單線程平安的,并發(fā)問題主要在于,若并發(fā)取出同一個數(shù)據(jù),再進行計算后,再并發(fā)存入redis,那后寫入的會覆蓋先寫入的,程序上理論應得結果就會異于數(shù)據(jù)庫最后所存數(shù)據(jù).
4、redis持久化的兩種方式:
1) RDB(默認) 適用于內存較大的機器,使用快照保留數(shù)據(jù),快照文件較小方便容災,快照時會突然占用大量內存(數(shù)據(jù)越多內存占用越大),默認已配置快照觸發(fā)條件.
2) AOF 適用于內存較小的機器,使用日志保留數(shù)據(jù),日志文件較大不便容災,每秒同步或者每修改同步
5、一般應用
1、從機只能讀,無法寫入任何數(shù)據(jù)
2、從機建立后,主機會將快照發(fā)給從機,從機獲得主機所有數(shù)據(jù)
3、主機宕機后,從機不會推選出新主機,需啟動一個哨兵—Sentinel進行管理
4、主機必需開啟持久化,否則主機宕機后重新啟動將會清空所有從機數(shù)據(jù)
5、若從機較多,則可以使用薪火相傳方式,每臺從機可以成為下一臺從機的主機,即:Master <- Slave1 <- Slave2 <- Slave3...
6、slave of no one 該指令可以反客為主,將從機變?yōu)橹鳈C
1、必要開啟pidfile和append備份文件所在目錄的當前用戶操作權限
2、最好把redis-server/cli/trib.rb 命令加入 /usr/bin 中以便隨地使用
3、注意是否安裝了yum install ruby 和gem install redis
4、服務器需開啟和開放相應的端口
5、連接集群需使用命令:redis-cli -c -p 端口
6、連接任意節(jié)點均可存取數(shù)據(jù),但存數(shù)據(jù)操作只轉移到主節(jié)點進行
7、若刪除主節(jié)點,需移動哈希槽的值到另一個主節(jié)點,主節(jié)點個數(shù)要與原來啟動集群時堅持一致,否則哈希槽分配會出現(xiàn)缺失
8、在4.0中試驗 若節(jié)點掛掉,如主節(jié)點數(shù)量足夠,似乎恢復該節(jié)點后并不會自動加入原有集群(待驗證)
最常見應用場景:緩存(如session緩存)
其他
2:隊列
3:排行榜/計數(shù)器
4:發(fā)布/訂閱
5、setbit(bitmap)統(tǒng)計活躍用戶
字符串(Strings)
Get key-name - 獲取存儲在給定鍵中的值
Set key-name - 獲取存儲在給定鍵中的值
Del key-name - 刪除存儲在給定鍵中的值(適用于所有類型)
列表(Lists)
RPush list-key item - 將給定值推入列表的右端
LRange list-key start stop - 獲取列表在給定范圍上的所有值
LIndex list-key index - 獲取列表在給定位置上的單個元素
LPop list-key - 從列表的左端pop出一個值,并返回該值
集合(Sets)
sadd set-key item - 將給定元素item添加到集合(返回0表示元素已存在于集合中,1表示添加成功)
smembers set-key - 返回集合中的所有元素
sismember set-key item - 檢查給定元素item是否存在于集合中
srem set-key item - 如果item存在于集合中,移除該元素(返回移除元素的數(shù)量)
散列(Hashes)
hset hash-key sub-key value - 在散列中設置給定的鍵值對
hget hash-key sub-key - 在散列中獲取指定鍵的值
hgetall hash-key - 獲取散列中所有的鍵值對
hdel hash-key sub-key - 移除散列中的給定鍵(存在返回1,不存在返回0)
有序集合(Sorted Sets)
zadd zset-key score member - 將一個帶有給定分值的成員添加到有序集合中
zrange zset-key start stop [withscores] - 根據(jù)元素在有序集合中所處的位置,從有序集合里面獲取多個元素
zrangebyscore zset-key start stop [withscores] - 獲取有序集合在給定分值范圍內的所有元素
zrem zset-key member - 在有序集合中移除給定成員(存在返回1,不存在返回0)
zrevrank zset-key member - 返回有序集合成員 member的排名,成員依照分值從大到小排列
zrevrange zset-key start stop [withscores] - 返回有序集合給定排名范圍內的成員,成員依照分值從大到小排列
其他命令(Other Commands)
sort source-key [BY pattern] [Limit offset count] [Get pattern [Get pattern ...]] [Asc|Desc] [Alpha] [Store dest-key] - 根據(jù)給定的選項,對輸入的列表、集合或者有序集合進行排序,返回或存儲排序的結果
發(fā)布/訂閱(publish/subscribe)
subscribe channel [channel ...] - 訂閱給定的頻道(一個或多個)
unsubscribe [channel [channel ...]] - 退訂給定的頻道,如果沒有給定頻道,將退訂所有頻道
publish channel message - 向給定頻道發(fā)送消息
psubscribe pattern [pattern ...] - 訂閱給定模式匹配的頻道
punsubscribe [pattern [pattern ...]] - 退訂給定pattern匹配的所有模式,如果沒有給定模式,將退訂所有模式
過期時間(expiring keys)
persist key-name - 移除鍵的過期時間
ttl key-name - 查看給定鍵距離過期還有多少秒
expire key-name seconds - 讓指定鍵在給定秒數(shù)后過期
expireat key-name timestamp - 將給定的過期時間設置為給定的Unix時間戳
pttl key-name - 查看給定鍵距離過期還有多少毫秒(version >= 2.6)
pexpire key-name milliseconds - 讓指定鍵在給定毫秒數(shù)后過期(version >= 2.6)
pexpireat key-name timestamp-milliseconds - 將給定的過期時間設置為給定的毫秒級 精度的Unix時間戳(version >= 2.6)
位圖操作(bitmap)
BITOP AND destkey key [key ...] ,對一個或多個 key 求邏輯并,并將結果保留到 destkey .
BITOP OR destkey key [key ...] ,對一個或多個 key 求邏輯或,并將結果保留到 destkey .
BITOP XOR destkey key [key ...] ,對一個或多個 key 求邏輯異或,并將結果保留到 destkey .
BITOP NOT destkey key ,對給定 key 求邏輯非,并將結果保留到 destkey .
以上指令切勿死記硬背,需結合實踐不斷練習.此篇未介紹實際開發(fā)的配置,也便是jedis使用及集群具體配置,都將會在后續(xù)文章中展開介紹,如有任何紕漏之處,還希望大家不吝指正,謝謝支持!!
歡迎參與《redis 個人使用總結》討論,分享您的想法,維易PHP學院為您提供專業(yè)教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/9213.html