1. 程式人生 > >redis資料庫介紹和常用操作

redis資料庫介紹和常用操作

一、redis介紹

Redis是一個速度非常快的非關係資料庫,它可以儲存鍵(key)與5種不同型別的值(value)之間的對映(mapping),可以將儲存在記憶體的鍵值對資料持久化到硬碟,可以使用複製特性來擴充套件讀效能,還可以使用客戶端分片來擴充套件寫效能。Redis是一個遠端記憶體資料庫。

1、與memcached比較

memcached是高效能鍵值快取伺服器,這兩者都可用於儲存鍵值對映,彼此的效能也相差無幾,但是Redis能夠自動以兩種不同的方式將資料寫入磁碟,並且Redis除了能儲存普通的字串鍵之外,還可以儲存其他4種資料結構,而memcached只能儲存普通的字串鍵。這些及其他不同使得Redis可以用於解決更為廣泛的問題,既可以作為主資料庫(primary database)使用,又可以作為其他儲存系統的輔助資料庫(auxiliary database)使用。

2、各種資料庫特性與功能

這裡寫圖片描述

3、持久化

在使用類似Redis這樣的記憶體資料庫時,一個首先要考慮的問題就是“當伺服器被關閉時,伺服器儲存的資料將何去何從呢?”

Redis擁有兩種不同形式的持久化方法,它們都可以用小而緊湊的格式將儲存在記憶體中的資料寫入到磁碟:

第一種持久化方法為時間點轉儲(point-in-time dump),轉儲操作既可以在“指定時間段內有指定數量的寫操作執行”這一條件被滿足時執行,又可以通過呼叫兩條轉儲到磁碟(dump-to-disk)命令中的任何一條來執行;

第二種持久化方法將所有修改了資料庫的命令都寫入到一個只追加(append-only)檔案裡面,使用者可以根據資料的重要程度,將只追加寫入設定為從不同步(sync)、每秒鐘同步一次或者每寫入一個命令就同步一次。

4、主從複製

儘管Redis的效能很好,但受限於Redis的記憶體儲存設計,有時候只使用一臺Redis伺服器可能沒有辦法處理所有請求。因此,為了擴充套件Redis的讀效能,併為Redis提供故障轉移(failover)支援,Redis實現了主從複製特性:

執行復制的從伺服器會連線上主伺服器,接收主伺服器傳送的完整資料庫的初始副本(copy);之後主伺服器執行的寫命令,都會被髮送給所有連線著的從伺服器去執行,從而實時地更新從伺服器的資料集。因為從伺服器包含的資料會不斷地進行更新,所以客戶端可以向任意一個從伺服器傳送讀請求,以此來避免對主伺服器進行集中式的訪問。

5、redis資料結構

Redis可以儲存鍵與5種不同資料結構型別之間的對映,這5種資料結構型別分別為STRING(字串)、LIST(列表)、SET(集合)、HASH(雜湊)和ZSET(有序集合)。

這裡寫圖片描述

二、常用操作

1、字串操作

這裡寫圖片描述

例如:redis 127.0.0.1:6379> set hello world#將鍵hello的值設定為world

2、列表操作

列表裡的元素可以重複,且是有序儲存。
LPUSH命令和RPUSH命令分別用於將元素推入到列表的左端(left end)和右端(right end);LPOP命令和RPOP命令分別用於從列表的左端和右端彈出元素;LINDEX命令用於獲取列表在給定位置上的一個元素;LRANGE命令用於獲取列表在給定範圍上的所有元素。

這裡寫圖片描述

除了上面提到的命令之外,Redis列表還擁有從列表裡面移除元素的命令、將元素插入到列表中間的命令、將列表修剪至指定長度(相當於從列表的其中一端或者兩端移除元素)的命令,以及其他一些命令。

3、集合操作

Redis的集合和列表都可以儲存多個字串,它們之間的不同在於,列表可以儲存多個相同的字串,而集合則通過使用散列表來保證自己儲存的每個字串都是各不相同的(這些散列表只有鍵,但沒有與鍵相關聯的值)。集合使用無序(unordered)方式儲存元素。

這裡寫圖片描述

另外,SINTER、SUNION、SDIFF三個命令分別執行常見的交集計算、並集計算和差集計算。

4、雜湊操作

Redis的雜湊可以儲存多個鍵值對之間的對映。和字串一樣,雜湊儲存的值既可以是字串又可以是數字值,並且使用者同樣可以對雜湊儲存的數字值執行自增操作或者自減操作。

這裡寫圖片描述

5、有序集合操作

有序集合和雜湊一樣,都用於儲存鍵值對:其中有序集合的每個鍵稱為成員(member),都是獨一無二的,而有序集合的每個值稱為分值(score),都必須是浮點數。有序集合是Redis裡面唯一既可以根據成員訪問元素(這一點和雜湊一樣),又可以根據分值以及分值的排列順序來訪問元素的結構。

這裡寫圖片描述

這裡寫圖片描述