redis入門教程

來源:互聯網
上載者:User

標籤:

21) Redis 簡介
Redis 是一個開源的使用 ANSI C 語言編寫、支援網路、可基於記憶體亦可持久化的日誌
型、Key-Value 資料庫。
2) 資料類型
2.1. Redis 的 Key
Redis 的 key 是字串類型,但是 key 中不能包括邊界字元,由於 key 不是 binary safe
的字串,所以像"my key"和"mykey\n"這樣包含空格和換行的 key 是不允許的。
2.1.1. key 相關指令介紹
exits key 檢測指定 key 是否存在,返回 1 表示存在,0 不存在
del key1 key2 ...... keyN 刪除給定 key,返回刪除 key 的數目,0 表示給定 key 都不存在
type key 返回給定 key 值的類型。返回 none 表示 key 不存在,string 字元類型,list 鏈表
類型 set 無序集合類型......
keys pattern 返回匹配指定模式的所有 key
randomkey 返回從當前資料庫中隨機播放的一個 key,如果當前資料庫是空的,返回空 串
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 不存在或者未設定到期時間。
select db-index 通過索引選擇資料庫,預設串連的資料庫是 0,預設資料庫數是 16 個。返回 1
表示成功,0 失敗。
move key db-index 將 key 從當前資料庫移動到指定資料庫。返回 1 表示成功。0 表示 key
不存在或者已經在指定資料庫中。
2.2. Redis 的 vaule
redis 提供五種資料類型:string,hash,list,set 及 sorted set。
2.2.1. string 類型
string 是最基本的類型,而且 string 類型是二進位安全的。意思是 redis 的 string 可以
包含任何資料。比如 jpg 圖片或者序列化的對象。從內部實現來看其實 string 可以看作 byte
3數組,最大上限是 1G 位元組。
string 類型資料操作指令簡介
s et key value 設定 key 對應 string 類型的值,返回 1 表示成功,0 失敗。
setnx key value 如果 key 不存在,設定 key 對應 string 類型的值。如果 key 已經存在,返
回 0。
get key 擷取 key 對應的 string 值,如果 key 不存在返回 nil
getset key value 先擷取 key 的值,再設定 key 的值。如果 key 不存在返回 nil。
mget key1 key2 ...... keyN 一次擷取多個 key 的值,如果對應 key 不存在,則對應返回 nil。
mset key1 value1 ...... keyN valueN 一次設定多個 key 的值,成功返回 1 表示所有的值都設定
了,失敗返回 0 表示沒有任何值被設定。
msetnx key1 value1 ...... keyN valueN 一次設定多個 key 的值,但是不會覆蓋已經存在的 key
incr key 對 key 的值做++操作,並返回新的值。注意 incr 一個不是 int 的 value 會返回錯
誤,incr 一個不存在的 key,則設定 key 值為 1。
decr key 對 key 的值做--操作,decr 一個不存在 key,則設定 key 值為-1。
incrby key integer 對 key 加上指定值 ,key 不存在時候會設定 key,並認為原來的 value
是 0。
decrby key integer 對 key 減去指定值。decrby 完全是為了可讀性,我們完全可以通過 incrby
一個負值來實現同樣效果,反之一樣。
2.2.2. hash 類型
hash 是一個 string 類型的 field 和 value 的映射表。添加,刪除操作都是 O(1)(平均)。
hash 特別適合用於儲存物件。相對於將對象的每個欄位存成單個 string 類型。將一個對象
儲存在 hash 類型中會佔用更少的記憶體,並且可以更方便的存取整個對象。省記憶體的原因是
建立一個 hash 對象時開始是用 zipmap(又稱為 small hash)來儲存的。這個 zipmap 其實並
不是 hash table,但是 zipmap 相比正常的 hash 實現可以節省不少 hash 本身需要的一些元
資料存放區開銷。儘管 zipmap 的添加,刪除,尋找都是 O(n),但是由於一般對象的 field
數量都不太多。所以使用 zipmap 也是很快的,也就是說添加刪除平均還是 O(1)。如果 field
或者 value 的大小超出一定限制後,redis 會在內部自動將 zipmap 替換成正常的 hash 實現.
這個限制可以在設定檔中指定。
hash-max-zipmap-entries 64
#配置欄位最多 64 個
hash-max-zipmap-value 512
#配置 value 最大為 512 位元組
hash 類型資料操作指令簡介
hset key field value 設定 hash field 為指定值,如果 key 不存在,則建立
hget key field 擷取指定的 hash field。
hmget key filed1....fieldN 擷取全部指定的 hash filed。
hmset key filed1 value1 ...... filedN valueN 同時設定 hash 的多個 field。
hincrby key field integer 將指定的 hash filed 加上指定值。成功返回 hash filed 變更後的
值。
hexists key field 檢測指定 field 是否存在。
hdel key field 刪除指定的 hash field。
hlen key 返回指定 hash 的 field 數量。
4hkeys key 返回 hash 的所有 field。
hvals key 返回 hash 的所有 value。
hgetall 返回 hash 的所有 filed 和 value
2.2.3. list 類型
list 是一個鏈表結構,可以理解為一個每個子項目都是 string 類型的雙向鏈表。 主要功
能是 push、pop、擷取一個範圍的所有值等。操作中 key 理解為鏈表的名字。
List 類型資料操作指令簡介
lpush key string 在 key 對應 list 的頭部添加字串元素,返回 1 表示成功,0 表示 key 存
在且不是 list 類型。
rpush key string 在 key 對應 list 的尾部添加字串元素。
llen key 返回 key 對應 list 的長度,如果 key 不存在返回 0,如果 key 對應類型不是 list
返回錯誤。
lrange key start end 返回指定區間內的元素,下標從 0 開始,負值表示從後面計算,-1 表示
倒數第一個元素 ,key 不存在返回空列表。
ltrim key start end 截取 list 指定區間內元素,成功返回 1,key 不存在返回錯誤。
lset key index value 設定 list 中指定下標的元素值,成功返回 1,key 或者下標不存在返回
錯誤。
lrem key count value 從 List 的頭部(count 正數)或尾部(count 負數)刪除一定數量(count)
匹配 value 的元素,返回刪除的元素數量。count 為 0 時候刪除全部。
lpop key 從 list 的頭部刪除並返回刪除元素。如果 key 對應 list 不存在或者是空返回 nil,
如果 key 對應值不是 list 返回錯誤。
rpop key 從 list 的尾部刪除並返回刪除元素。
blpop key1 ...... keyN timeout 從左至右掃描,返回對第一個非空 list 進行 lpop 操作並返回,
比如 blpop list1 list2 list3 0 ,如果 list 不存在 list2,list3 都是非空則對 list2 做
lpop 並返回從 list2 中刪除的元素。如果所有的 list 都是空或不存在,則會阻塞 timeout
秒,timeout 為 0 表示一直阻塞。當阻塞時,如果有 client 對 key1...keyN 中的任意 key
進行 push 操作,則第一在這個 key 上被阻塞的 client 會立即返回。如果逾時發生,則返回
nil。有點像 unix 的 select 或者 poll。
brpop 同 blpop,一個是從頭部刪除一個是從尾部刪除。
2.2.4. set 類型
set 是無序集合,最大可以包含(2 的 32 次方-1)個元素。set 的是通過 hash table 實現的,
所以添加,刪除,尋找的複雜度都是 O(1)。hash table 會隨著添加或者刪除自動的調整大小。
需要注意的是調整 hash table 大小時候需要同步(擷取寫鎖)會阻塞其他讀寫操作。可能不
久後就會改用跳錶(skip list)來實現。跳錶已經在 sorted sets 中使用了。關於 set 集合類型
除了基本的添加刪除操作,其它有用的操作還包含集合的取並集(union),交集(intersection),
差集(difference)。通過這些操作可以很容易的實現 SNS 中的好友推薦和 blog 的 tag 功能。
5set 類型資料操作指令簡介
sadd key member 添加一個 string 元素到 key 對應 set 集合中,成功返回 1,如果元素以及
在集合中則返回 0,key 對應的 set 不存在則返回錯誤。
srem key member 從 key 對應 set 中移除指定元素,成功返回 1,如果 member 在集合中不
存在或者 key 不存在返回 0,如果 key 對應的不是 set 類型的值返回錯誤。
spop key 刪除並返回 key 對應 set 中隨機的一個元素,如果 set 是空或者 key 不存在返回
nil。
srandmember key 同 spop,隨機取 set 中的一個元素,但是不刪除元素。
smove srckey dstkey member 從 srckey 對應 set 中移除 member 並添加到 dstkey 對應 set 中,
整個操作是原子的。成功返回 1,如果 member 在 srckey 中不存在返回 0,如果 key 不是 set
類型返回錯誤。
scard key 返回 set 的元素個數,如果 set 是空或者 key 不存在返回 0。
sismember key member 判斷 member 是否在 set 中,存在返回 1,0 表示不存在或者 key 不
存在。
sinter key1 key2 ...... keyN 返回所有給定 key 的交集。
sinterstore dstkey key1 ....... keyN 返回所有給定 key 的交集,並儲存交集存到 dstkey 下。
sunion key1 key2 ...... keyN 返回所有給定 key 的並集。
sunionstore dstkey key1 ...... keyN 返回所有給定 key 的並集,並儲存並集到 dstkey 下。
sdiff key1 key2 ...... keyN 返回所有給定 key 的差集。
sdiffstore dstkey key1 ...... keyN 返回所有給定 key 的差集,並儲存差集到 dstkey 下。
smembers key 返回 key 對應 set 的所有元素,結果是無序的。
2.2.5. sorted set 類型
sorted set 是有序集合,它在 set 的基礎上增加了一個順序屬性,這一屬性在添加修
改元素的時候可以指定,每次指定後,會自動重新按新的值調整順序。可以理解了有兩列的
mysql 表,一列存 value,一列存順序。操作中 key 理解為 sorted set 的名字。
Sorted Set 類型資料操作指令簡介
add key score member 添加元素到集合,元素在集合中存在則更新對應 score。
zrem key member 刪除指定元素,1 表示成功,如果元素不存在返回 0。
zincrby key incr member 增加對應 member 的 score 值,然後移動元素並保持 skip list 保持有
序。返回更新後的 score 值。
zrank key member 返回指定元素在集合中的排名(下標),集合中元素是按 score 從小到大
排序的。
zrevrank key member 同上,但是集合中元素是按 score 從大到小排序。
zrange key start end 類似 lrange 操作從集合中去指定區間的元素。返回的是有序結果
zrevrange key start end 同上,返回結果是按 score 逆序的。
zrangebyscore key min max 返回集合中 score 在給定區間的元素。
zcount key min max 返回集合中 score 在給定區間的數量。
zcard key 返回集合中元素個數。
zscore key element 返回給定元素對應的 score。
6zremrangebyrank key min max 刪除集合中排名在給定區間的元素。
zremrangebyscore key min max 刪除集合中 score 在給定區間的元素
3) 持久化
通常 Redis 將資料存放區在記憶體中或虛擬記憶體中,它是通過以下兩種方式實現對資料的持
久化。
3.1. 快照方式:(預設持久化方式)
這種方式就是將記憶體中資料以快照的方式寫入到二進位檔案中 ,預設的檔案名稱 為
dump.rdb。
用戶端也可以使用 save 或者 bgsave 命令通知 redis 做一次快照持久化。save 操作是在
主線程中儲存快照的,由於 redis 是用一個主線程來處理所有用戶端的請求,這種方式會阻
塞所有用戶端請求。所以不推薦使用。另一點需要注意的是,每次快照持久化都是將記憶體數
據完整寫入到磁碟一次,並不是增量的只同步增量資料。如果資料量大的話,寫操作會比較
多,必然會引起大量的磁碟 IO 操作,可能會嚴重影響效能。
注意:由於快照方式是在一定間隔時間做一次的,所以如果 redis 意外當機的話,就會
丟失最後一次快照後的所有資料修改。
3.2. 日誌追加方式:
這 種 方 式 redis 會 將 每 一 個 收 到 的 寫 命 令 都 通 過 write 函 數 追 加 到 文 件 中 (默 認
appendonly.aof)。當 redis 重啟時會通過重新執行檔案中儲存的寫命令來在記憶體中重建整
個資料庫的內容。當然由於作業系統會在核心中緩衝 write 做的修改,所以可能不是立即寫
到磁碟上。這樣的持久化還是有可能會丟失部分修改。不過我們可以通過設定檔告 訴
redis 我們想要通過 fsync 函數強制作業系統寫入到磁碟的時機。有三種方式如下(預設是:
每秒 fsync 一次)
appendonly yes
#appendfsync always
的持久化,不推薦使用
appendfsync everysec
中,推薦
#appendfsync no
//啟用日誌追加持久化方式
//每次收到寫命令就立即強制寫入磁碟,最慢的,但是保證完全
//每秒鐘強制寫入磁碟一次,在效能和持久化方面做了很好的折
//完全依賴作業系統,效能最好,持久化沒保證
日誌追加方式同時帶來了另一個問題。持久化檔案會變的越來越大。例如我們調用 incr
test 命令 100 次,檔案中必須儲存全部 100 條命令,其實有 99 條都是多餘的。因為要恢複
資料庫狀態其實檔案中儲存一條 set test 100 就夠了。為了壓縮這種持久化方式的記錄檔。
redis 提供了 bgrewriteaof 命令。收到此命令 redis 將使用與快照類似的方式將記憶體中的資料
以命令的方式儲存到臨時檔案中,最後替換原來的持久化記錄檔。
74) 虛擬記憶體(適用於 value 比 key 大的情況)
4.1. Redis 虛擬記憶體簡介
首先說明下 redis 的虛擬記憶體與作業系統虛擬記憶體不是一碼事,但是思路和目的都是相
同的。就是暫時把不經常訪問的資料從記憶體交換到磁碟中,從而騰出寶貴的記憶體空間。對於
redis 這樣的記憶體資料庫,記憶體總是不夠用的。除了可以將資料分割到多個 redis 伺服器以
外。另外的能夠提高資料庫容量的辦法就是使用虛擬記憶體技術把那些不經常訪問的資料交換
到磁碟上。如果我們儲存的資料總是有少部分資料被經常訪問,大部分資料很少被訪問,對
於網站來說確實總是只有少量使用者經常活躍。當少量資料被經常訪問時,使用虛擬記憶體不但
能提高單台 redis 資料庫伺服器的容量,而且也不會對效能造成太多影響。
redis 沒有使用作業系統提供的虛擬記憶體機制而是自己在使用者態實現了自己的虛擬內
存機制。
主要的理由有以下兩點:
1. 作業系統的虛擬記憶體是以 4k/頁為最小單位進行交換的。而 redis 的大多數對象都遠小
於 4k,所以一個作業系統頁上可能有多個 redis 對象。另外 redis 的集合物件類型如
list,set 可能存在於多個作業系統頁上。最終可能造成只有 10%的 key 被經常訪問,但
是所有作業系統頁都會被作業系統認為是活躍的,這樣只有記憶體真正耗盡時作業系統才
會進行頁的交換。
2. 相比作業系統的交換方式。redis 可以將被交換到磁碟的對象進行壓縮,儲存到磁碟的對
象可以去除指標和對象中繼資料資訊。一般壓縮後的對象會比記憶體中的對象小 10 倍。這
樣 redis 的虛擬記憶體會比作業系統的虛擬記憶體少做很多 IO 操作。
4.2. Redis 虛擬記憶體相關配置
vm-enabled yes
#開啟虛擬記憶體功能
vm-swap-file /tmp/redis.swap
#交換出來 value 儲存的檔案路徑/tmp/redis.swap
vm-max-memory 268435456
#redis 使用的最大記憶體上限(256MB),超過上限後
redis 開始交換 value 到磁碟 swap 檔案中。建議設定為系統空閑記憶體的 60%-80%
vm-page-size 32
#每個 redis 頁的大小 32 個位元組
vm-pages 134217728
#最多在檔案中使用多少個頁,分頁檔的大小 =
(vm-page-size * vm-pages)4GB
vm-max-threads 8
#用於執行 value 對象換入換出的背景工作執行緒數量。0
表示不使用背景工作執行緒(詳情後面介紹)
redis 的虛擬記憶體在設計上為了保證 key 的查詢速度,只會將 value 交換到 swap 檔案
中。如果是由於太多 key 很小的 value 造成的記憶體問題,那麼 redis 的虛擬記憶體並不能解
決問題。和作業系統一樣 redis 也是按頁來交換對象的。redis 規定同一個頁只能儲存一個
對象。但是一個對象可以儲存在多個頁中。在 redis 使用的記憶體沒超過 vm-max-memory 之前
是不會交換任何 value 的。當超過最大記憶體限制後,redis 會選擇把較老的對象交換到 swap
檔案中去。如果兩個對象一樣老會優先交換比較大的對象,精確的交換計算公 式
swappability = age*log(size_in_memory)。 對於 vm-page-size 的設定應該根據自己應用
將頁的大小設定為可以容納大多數對象的尺寸。太大了會浪費磁碟空間,太小了會造成交換
8檔案出現過多片段。對於分頁檔中的每個頁,redis 會在記憶體中用一個 1bit 值來對應記
錄頁的空閑狀態。所以像上面配置中頁數量(vm-pages 134217728 )會佔用 16MB 記憶體用來記
錄頁的空閑狀態。vm-max-threads 表示用做交換任務的背景工作執行緒數量。如果大於 0 推薦設
為伺服器的 cpu 的核心數。如果是 0 則交換過程在主線程進行。
4.3. redis 虛擬記憶體工作方式簡介
4.3.1. 當 vm-max-threads 設為 0 時(阻塞方式)
換出
主線程定期檢查發現記憶體超出最大上限後,會直接以阻塞的方式,將選中的對象儲存到 swap
檔案中,並釋放對象佔用的記憶體空間,此過程會一直重複直到下麵條件滿足
1.記憶體使用量降到最大限制以下
2.swap 檔案滿了。
3.幾乎全部的對象都被交換到磁碟了
換入
當有用戶端請求已經被換出的 value 時,主線程會以阻塞的方式從 swap 檔案中載入對應的
value 對象,載入時此時會阻塞所有用戶端。然後處理該用戶端的請求
4.3.2. 當 vm-max-threads 大於 0 時(背景工作執行緒方式)
換出
當主線程檢測到使用記憶體超過最大上限,會將選中要交換的對象資訊放到一個隊列中交給工
作線程幕後處理,主線程會繼續處理用戶端請求。
換入
如果有用戶端請求的 key 已經被換出了,主線程會先阻塞發出命令的用戶端,然後將載入對
象的資訊放到一個隊列中,讓背景工作執行緒去載入。載入完畢後背景工作執行緒通知主線程。主線程再
執行用戶端的命令。這種方式只阻塞請求的 value 是已經被換出 key 的用戶端。
總的來說阻塞方式的效能會好一些,因為不需要線程同步、建立線程和恢複被阻塞的客
戶端等開銷。但是也相應的犧牲了響應性。背景工作執行緒方式主線程不會阻塞在磁碟 IO 上,所
以響應性更好。如果我們的應用不太經常發生換入換出,而且也不太在意有點延遲的話推薦
使用阻塞方式。
關於 redis 虛擬記憶體更詳細介紹可以參考下面連結
http://redis.io/topics/internals-vm
5) 主從同步
5.1. Redis 主從複製簡介
9Redis 支援將資料同步到多台從庫上,這種特性對提高讀取效能非常有益。
1) master 可以有多個 slave。
2) 除了多個 slave 連到相同的 master 外,slave 也可以串連其它 slave 形成圖狀結構。
3) 主從複製不會阻塞 master。也就是說當一個或多個 slave 與 master 進行初次同步資料
時,master 可以繼續處理用戶端發來的請求。相反 slave 在初次同步資料時則會阻塞
不能處理用戶端的請求。
4) 主從複製可以用來提高系統的延展性 ,我們可以用多個 slave 專門用於用戶端的讀
請求,比如 sort 操作可以使用 slave 來處理。也可以用來做簡單的資料冗餘。
5) 可以在 master 禁用資料持久化,只需要注釋掉 master 設定檔中的所有 save 配置,然
後只在 slave 上配置資料持久化。
5.2. Redis 主從複製的過程介紹
當設定好 slave 伺服器後,slave 會建立和 master 的串連,然後發送 sync 命令。無論是
第一次同步建立的串連還是串連斷開後的重新串連,master 都會啟動一個後台進程,將資料
庫快照儲存到檔案中,同時 master 主進程會開始收集新的寫命令並緩衝起來。後台進程完
成寫檔案後,master 就傳送檔案給 slave,slave 將檔案儲存到磁碟上,然後載入到記憶體恢複
資料庫快照集到 slave 上。接著 master 就會把緩衝的命令轉寄給 slave。而且後續 master 收到
的寫命令都會通過開始建立的串連發送給 slave。從 master 到 slave 的同步資料的命令和從 客
戶端發送的命令使用相同的協議格式。當 master 和 slave 的串連斷開時 slave 可以自動重新
建立串連。如果 master 同時收到多個 slave 發來的同步串連命令,只會啟動一個進程來寫數
據庫鏡像,然後發送給所有 slave。
配置 slave 伺服器很簡單,只需要在設定檔中加入如下配置
slaveof 192.168.1.1 6379
#指定 master 的 ip 和連接埠
附錄 A:redis 的安裝與配置
1.1. 安裝
1.1.1. 編譯安裝
$ wget http://redis.googlecode.com/files/redis-2.2.7.tar.gz
$ tar xzf redis-2.2.7.tar.gz
$ cp -r redis-2.2.7 /usr/local/redis
$ cd /usr/local/redis
$ make
$ make install
# 編譯好的檔案將被複製到/usr/local/bin 下
#redis-server
#redis-server:Redis 伺服器的 daemon 啟動程式
#redis-cli
#redis-cli:Redis 命令列操作工具。當然,你也可以用 telnet 根據其純文字協議來操作
#redis-benchmark
#redis-benchmark:Redis 效能測試工具,測試 Redis 在你的系統及你的配置下的讀寫效能
$redis-benchmark -n 100000 –c 50 #類比同時由 50 個用戶端發送 100000 個 SETs/GETs 查
10詢
# redis-check-aof
redis-check-aof:更新日誌檢查
#redis-check-dump
#redis-check-dump:本機資料庫檢查
1.1.2. 配置
修改設定檔,並將其複製到 etc 目錄下
vi redis.conf
$cp redis.conf /etc/redis.conf
設定檔基本說明
daemonize:
#是否以後台守護進程方式運行
pidfile:
#pid 檔案位置
port:
#監聽的連接埠號碼
timeout:
#請求逾時時間
loglevel:
#log 資訊層級,總共支援四個層級:debug、verbose、notice、warning,
預設為 verbose
logfile:
#預設為標準輸出(stdout),如果配置為守護進程方式運行,而這裡又配
置為日誌記錄方式為標準輸出,則日誌將會發送給/dev/null
databases:
#開啟資料庫的數量。使用“SELECT 庫 ID”方式切換操作各個資料庫
save * *:
#儲存快照的頻率,第一個*表示多長時間,第二個*表示執行多少次寫操
作。在一定時間內執行一定數量的寫操作時,自動儲存快照。可設定多個條件。
rdbcompression:#儲存快照是否使用壓縮
dbfilename:
#資料快照檔案名稱(只是檔案名稱,不包括目錄)。預設值為 dump.rdb
dir:
#資料快照的儲存目錄(這個是目錄)
requirepass:
#設定 Redis 串連密碼,如果配置了串連密碼,用戶端在串連 Redis 時需
要通過 AUTH <password>命令提供密碼,預設關閉。
1.1.3. 啟動 redis
$redis-server /etc/redis.conf
1.1.4. 關閉 redis
$ redis-cli shutdown
#關閉指定連接埠的 redis-server
$redis-cli -p 6379 shutdown
111.1.5. 更新安裝 redis
其它同安裝,只是最後 make install 之前需要把正在啟動並執行老版本 redis 關閉。
1.1.6. redis 系統管理相關指令簡介
DBSIZE 返回當前資料庫 key 的數量。
INFO 返回當前 redis 伺服器狀態和一些統計資訊。
MONITOR 即時監聽並返回redis伺服器接收到的所有請求資訊 。
SHUTDOWN 把資料同步儲存到磁碟上,並關閉redis服務。
CONFIG GET parameter 擷取一個 redis 配置參數資訊。(個別參數可能無法擷取)
CONFIG SET parameter value 設定一個 redis 配置參數資訊。(個別參數可能無法擷取)
CONFIG RESETSTAT 重設 INFO 命令的 統計 資訊。(重設包括: Keyspace 命中數、
Keyspace 錯誤數、 處理命令數,接收串連數、到期 key 數)
DEBUG OBJECT key 擷取一個 key 的調試資訊。
DEBUG SEGFAULT 製造一次伺服器當機。
FLUSHDB 刪除當前資料庫中所有 key,此方法不會失敗。小心慎用
FLUSHALL 刪除全部資料庫中所有 key,此方法不會失敗。小心慎用
附錄 B:安裝 phpredis 模組
https://github.com/nicolasff/phpredis
下載 phpredis 最新版本
解壓
> cd phpredis
> /usr/local/php5/bin/phpize #這個 phpize 是安裝 php 模組的
> ./configure –with-php-config=/usr/local/php5/bin/php-config
> make
> cp modules/redis.so /usr/local/php5/etc/redis.so
接下來在 php.ini 中添加 extension=redis.so.
重啟 apache
php 代碼測試
<?php
$redis = new Redis();
$redis->connect(
$redis->connect(‘‘ 127.0.0.1
127.0.0.1′′ ,6379);
$redis->set(
$redis->set(‘‘ test
test’’ ,‘hello world!
world!’’ );
echo $redis->get(
$redis->get(‘‘ test
test’’ );
?>
phpredis 方法說明:
12https://github.com/nicolasff/phpredis/blob/master/README.markdown#readme
參考資料與知識擴充
Redis 指令大全:
http://redis.io/commands
Redis 指令線上類比練習:
http://try.redis-db.com/
13

redis入門教程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.