redis命令

set:設(shè)置key對應(yīng)的值為string類型的value set name lijie


setnx 設(shè)置key對應(yīng)的值為string類型的value 如果key 已經(jīng)存在,返回0只酥,成功返回1 nx是not exist的意思


setex:設(shè)置key對應(yīng)的值為string類型的value飘诗,并指定此鍵值對應(yīng)的有效期 setex haircolor 10 red 有效期10秒


setrange設(shè)置指定key的value值的子字符串

例如我們希望將lijie的126郵箱替換為gmail郵箱

set email lijie@126.com

setrange email 6 gmail.com 6表示下標 表示從第6個字符開始替換


mset:一次設(shè)置多個key的值,成功返回ok表示所有的值都設(shè)置了,失敗返回0表示沒有任何值被設(shè)置



msetnx:一次設(shè)置多個key的值致板,成功返回ok表示所有的值都設(shè)置了,失敗返回0表示沒有任何值被設(shè)置咏窿,但是不會覆蓋已經(jīng)存在的key


getset 設(shè)置key的值 并返回key的舊值


getrange:獲取key的value值的子字符串

mget 一次獲取多個key的值斟或,如果對應(yīng)的key不存在 則對應(yīng)返回nil


incr 對key值做加加操作 并返回新的值


incrby 加指定值 key不存在會設(shè)置key,并認為原來的value是0


append:給指定的key的字符串追加value 返回新字符串的長度


strlen:取指定key的value值的長度

二 hashes類型及操作

Redis hash是一個string類型的field和value的映射表集嵌。它的添加 刪除操作是0(1)(平均)

hash特別適合用于存儲對象萝挤。相較于將對象的每個字段存成單個string類型。將一個對象存儲在hash類型中會占用更少的內(nèi)存根欧。并且可以更方便的存儲整個對象

hset:設(shè)置hash field為指定值 如果key不存在怜珍,則先創(chuàng)建

hsetnx 設(shè)置hash field為指定值 如果key不存在,則先創(chuàng)建.如果存在返回0


hmset 同時設(shè)置hash的多個field


hincrby 指定的hash field 加上給定值

hexists 測試指定field是否存在


hlen: 指定hash的field數(shù)量

hdel 刪除指定hash的field

hkeys:返回hash的所有field

hvals:返回hash的所有value

hgetall:返回某個hash中所有的field和value


lists 類型及操作

list是一個鏈表結(jié)構(gòu)主要功能是push pop 獲取一個范圍的所有值

操作中key理解為鏈表的名字 redis的list類型其實就是一個每個元素都是string類型的

雙向鏈表咽块。我們可以通過push pop操作從鏈表的頭部或者尾部添加刪除元素绘面,這樣list即可以作為棧,又可以作為隊列

lpush :在key對應(yīng)list的頭部添加字符串元素

lpush mylist1 word 向鏈表添加元素

lrange mylist1 0 -1 獲取mylist1所有元素

rpush :在key對應(yīng)list的尾部添加字符串元素

rpush mylist2 word

rpush mylist2 hello

lrange mylist2 0 -1

linsert 在key對應(yīng)list的特定位置前或后添加字符串元素

lpush list3 one

lpush list3 two

linsert list3 before one three

lset 設(shè)置list中指定下標的元素值

lrem 從key對應(yīng)的list中刪除n個和value相同的元素

ltrim 保留指定key的值范圍內(nèi)的數(shù)據(jù)

lpop 從list的頭部刪除元 并返回刪除元素


rpoplpush 從第一個list的尾部刪除元素 并添加到第二個list的頭部


lindex 返回名稱為key的list中index位置的元素

llen:返回key對應(yīng)list的長度

sets類型及操作

set是集合 它是string類型的無序集合侈沪。 set是通過hash table實現(xiàn)的 添加 刪除 和查找的復(fù)雜度都是0(1). 對集合我們可以取并集 交集 差集揭璃。通過這些操作我們可以實現(xiàn)sns中的好友推薦等

sadd 向名稱為key的set中添加元素

srem 刪除名稱為key的set中的元素

spop 隨機返回并刪除名稱為key的set中一個元素

sdiff:返回所有給定key與第一key的差集

sinter 返回所有給定key的交集

sinterstore 返回所有給定key的交集 并將結(jié)果存在另一個key

sunion 返回所有給定key的并集

smove 從第一個key對應(yīng)的set中移除member并添加到第二個對應(yīng)的set中

scard 返回名稱為key的set的元素個數(shù)

sismember 測試member是否是名稱為key的set的元素

srandmember 隨機返回名稱為key的set的一個元素,但不刪除元素


sorted sets類型及操作

sorted set是set的一個升級版本亭罪,它在set的基礎(chǔ)上增加了一個順序?qū)傩允葩桑@一

屬性在添加修改元素時可以指定,每次指定后应役,zset會自動重新按新的值調(diào)整順序

可以理解為有2列的mysql表 一列存value 一列存順序 操作中key理解為zset的名字情组。

zadd 向名稱為key的zset中添加元素member,score用于排序。如果該元素存在

則更新其順序

zrem 刪除名稱為key的zset中的元素member

zincrby 如果在名稱為key的zset中已經(jīng)存在元素member

zrank 返回名稱為key的zset中member元素的排名(按score從小到大排序)即下標


zrevrank 返回名稱為key的zset中member元素的排名(按score從大到小排序)即下標

zcount 返回集合中score在給定區(qū)間內(nèi)的數(shù)量

六 redis的常用命令及高級應(yīng)用

keys *

keys my*

exist:確認一個key是否存在

del 刪除一個key

expire :設(shè)置一個key的過期時間

ttl:獲取一個key的有效時長

move 把當前數(shù)據(jù)庫中的key轉(zhuǎn)移到其他數(shù)據(jù)庫中

persist:移除給定key的過期時間

rename : 重命名

rename age age_new

type 返回值的類型

type addr

ping:測試連接是否存活

echo: 在命令行打印一些內(nèi)容

select表示選擇數(shù)據(jù)庫

redis的數(shù)據(jù)庫編號從0~15 我們可以選擇任意一個數(shù)據(jù)庫進行數(shù)據(jù)的存儲

當選擇16時箩祥,報錯院崇,說明沒有編號為16的這個數(shù)據(jù)庫

quit exit 都表示退出連接


info:獲取服務(wù)器的信息和統(tǒng)計

config get 實時傳儲收到的請求

config get dir 獲取dir這個參數(shù)配置的值

獲取全部參數(shù)的配置值也很簡單 只需要執(zhí)行 config get * 即可將全部的值都顯示出來

flushdb 刪除當前選擇數(shù)據(jù)庫中所有key

flushall 刪除所有數(shù)據(jù)庫中所有key


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?redis 高級實用特性

1,安全性:設(shè)置客戶端連接后進行任何其他指定前需要使用的密碼

因為redis速度相當快袍祖,所以在一臺比較好的服務(wù)器下底瓣,一個外部的用戶可以在一秒鐘進行

150k次的密碼嘗試,這意味著你需要指定非常非常強大的密碼來防止暴力破解

配置

requirepass bejing

usr/local/redis/bin/redis-cli

keys *

auth beijing

或者

usr/local/redis/bin/redis-cli -a beijing


取消密碼驗證后


2蕉陋,主從復(fù)制

redis主從復(fù)制配置和使用都非常簡單 通過主從復(fù)制可以允許多個slave server 擁有和master server相同的數(shù)據(jù)庫副本捐凭。

redis主從復(fù)制過程

1拨扶,slave與,master建立連接茁肠,發(fā)送sync同步命令

2患民,master會啟動一個后臺進程 將數(shù)據(jù)庫快照保存到文件中

同時master主進程會開始收集新的寫命令并緩存

3,后臺完成保存后垦梆,就將次文件發(fā)送給slave

4匹颤,slave將此文件保存到硬盤上

配置主從服務(wù)器:

配置slave服務(wù)器很簡單 只需要在slave的配置文件中加入以下配置

slaveof 192.168.2.201 6379 #指定master的ip和端口

masterauth lamp#這是主機的密碼

配置從redis

vim /etc/redis.conf


主redis

從redis

3,事務(wù)處理

redis對事務(wù)的支持目前還比較簡單 redis 只能保證一個client 發(fā)起的事務(wù)中的命令可以連續(xù)的執(zhí)行奶赔,而中間不會插入其他client的命令惋嚎。當一個client在一個連接中發(fā)出multi命令時,這個連接會進入一個事務(wù)上下文站刑,該連接后續(xù)的命令不會立即執(zhí)行,而是先放到一個隊列中鼻百,當執(zhí)行exec命令時绞旅,redis會順序的執(zhí)行隊列中的所有命令。

set age 100

get age

multi

set age 10

set age 20

exec

取消一個事務(wù):discard

multi

incr age

incr name

exec

取消事務(wù)

事務(wù)不完美

一個成功 一個失敗

4温艇,持久化機制

redis是一個支持持久化的內(nèi)存數(shù)據(jù)庫因悲,也就是說redis需要經(jīng)常將內(nèi)存中的數(shù)據(jù)同步到硬盤來保證

持久化

1,snapshotting(快照)也是默認方式

將內(nèi)存中的數(shù)據(jù)以快照的方式寫入到二進制文件中勺爱,默認的文件名為dump.rdb.

可以通過配置設(shè)置自動做快照持久化的方式晃琳。我們可以配置redis在n秒內(nèi)如果超過m個key被修改就自動做快照

save 900 1? #900秒內(nèi)如果超過1個key被修改,則發(fā)起快照保存

save 300 10 #300秒內(nèi)如果超過10個key被修改琐鲁,則發(fā)起快照保存

2卫旱,Append-only file(縮寫aof)的方式

由于快照方式是在一定間隔時間做一次的,所以如果redis意外down掉的話围段,就會丟失最后一次快照后的所有修改顾翼。

aof比快照方式有更好的持久化性,是由于在使用aof時奈泪,redis會將每一個收到的寫命令都通過write函數(shù)追加到文件中适贸,當redis重啟時會通過重新執(zhí)行文件中保存的寫命令來在內(nèi)存中重建整個數(shù)據(jù)庫的內(nèi)容

當然由于os會在內(nèi)核中緩存write做的修改,所以可能不是立即寫到磁盤上涝桅。這樣aof方式的持久化也還是有可能會丟失部分修改

可以通過配置文件告訴redis 我們想要通過fsync函數(shù)強制os寫入到磁盤的時機

appendonly yes//啟用aof持久化方式

appendfsync always //收到寫命令就立即寫入磁盤拜姿,最慢,但是保證完全的持久化

appendfsync everysec //每秒鐘寫入磁盤一次冯遂,在性能和持久化方面做了很好的折中

appendfsync no //完全依賴os 性能最好 持久化沒保證

配置文件


5蕊肥,發(fā)布訂閱消息

發(fā)布訂閱(pub/sub)是一種消息通信模式,主要的目的是解除消息發(fā)布者和消息訂閱者之間的耦合

redis作為一個pub/sub的server债蜜,在訂閱者和發(fā)布者之間起到了消息路由的功能晴埂。訂閱者可以通過

subscribe和psubscribe命令向redis server 訂閱自己感興趣的消息類型究反,redis將信息類型稱為通道。當發(fā)布者通過publish命令向redis server發(fā)送特定類型的信息時儒洛,訂閱該信息類型的全部client都會收到此消息

接收信息

接收信息


發(fā)送信息


6精耐,虛擬內(nèi)存的使用

redis的虛擬內(nèi)存就是把不經(jīng)常訪問的數(shù)據(jù)從內(nèi)存交換到磁盤中,從而騰出寶貴的內(nèi)存空間用于其他需要訪問的數(shù)據(jù)琅锻。 尤其是對于redis這樣的內(nèi)存數(shù)據(jù)庫卦停,內(nèi)存總是不夠的。除了可以將數(shù)據(jù)分割到多個redis server外 另外能夠提高數(shù)據(jù)庫容量的辦法就是使用虛擬內(nèi)存把那些不經(jīng)常訪問的數(shù)據(jù)交換到磁盤上恼蓬。

vm相關(guān)配置

vm-enabled yes //開啟vm功能

vm-swap-file /tmp/redis.swap //#交換出來的value保存的文件路徑

vm-max-memory 100000 //redis使用的最大內(nèi)存上限

vm-page-size 32 //每個頁面的大小32字節(jié)

vm-pages 134217728 最多使用多少個頁面

vm-max-threads //用于執(zhí)行value對象換入的工作線程數(shù)量

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惊完,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子处硬,更是在濱河造成了極大的恐慌小槐,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荷辕,死亡現(xiàn)場離奇詭異凿跳,居然都是意外死亡,警方通過查閱死者的電腦和手機疮方,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門控嗜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人骡显,你說我怎么就攤上這事疆栏。” “怎么了惫谤?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵壁顶,是天一觀的道長。 經(jīng)常有香客問我石挂,道長博助,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任痹愚,我火速辦了婚禮富岳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拯腮。我一直安慰自己窖式,他們只是感情好,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布动壤。 她就那樣靜靜地躺著萝喘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上阁簸,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天爬早,我揣著相機與錄音,去河邊找鬼启妹。 笑死筛严,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的饶米。 我是一名探鬼主播桨啃,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼檬输!你這毒婦竟也來了照瘾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤丧慈,失蹤者是張志新(化名)和其女友劉穎常拓,沒想到半個月后啡莉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尊惰,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡郁轻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了笑旺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡馍资,死狀恐怖筒主,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鸟蟹,我是刑警寧澤乌妙,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站建钥,受9級特大地震影響藤韵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜熊经,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一泽艘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧镐依,春花似錦匹涮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春雳攘,著一層夾襖步出監(jiān)牢的瞬間带兜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工吨灭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留刚照,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓沃于,卻偏偏與公主長得像涩咖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子繁莹,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 源地址:http://blog.csdn.net/gjanuary/article/details/5207699...
    Freeasthew_a098閱讀 1,526評論 0 6
  • 本文將從Redis的基本特性入手咨演,通過講述Redis的數(shù)據(jù)結(jié)構(gòu)和主要命令對Redis的基本能力進行直觀介紹闸昨。之后概...
    kelgon閱讀 61,122評論 24 626
  • Redis命令運行于redis服務(wù)器上,要在服務(wù)器上運行命令需要一個redis客戶端薄风,在安裝Redis安裝包時饵较,我...
    第八共同體閱讀 226評論 0 0
  • 1 Redis介紹1.1 什么是NoSql為了解決高并發(fā)循诉、高可擴展、高可用撇他、大數(shù)據(jù)存儲問題而產(chǎn)生的數(shù)據(jù)庫解決方...
    克魯?shù)吕?/span>閱讀 5,266評論 0 36
  • 今天聽了基因革命的解說茄猫,對其中幾點感受頗深。 第一困肩,在孕前和孕中媽媽的狀態(tài)對孩子影響很大划纽。而第一次懷孕的時候我顯然...
    小多媛媛閱讀 168評論 0 0