redis資料庫介紹和常用操作

2021-07-30 16:13:07 字數 2273 閱讀 1936

內容來自《redis實戰》。

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

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

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

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

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

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

redis可以儲存鍵與5種不同資料結構型別之間的對映,這5種資料結構型別分別為string(字串)、list(列表)、set(集合)、hash(雜湊)和zset(有序集合)。

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

列表裡的元素可以重複,且是有序儲存。

lpush命令和rpush命令分別用於將元素推入到列表的左端(left end)和右端(right end);lpop命令和rpop命令分別用於從列表的左端和右端彈出元素;lindex命令用於獲取列表在給定位置上的乙個元素;lrange命令用於獲取列表在給定範圍上的所有元素。

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

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

另外,sinter、sunion、sdiff三個命令分別執行常見的交集計算、並集計算和差集計算。

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

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

redis資料庫常用操作

1 設定 設定鍵值 set key value 設定鍵值及過期時間,以秒為單位 setex key seconds value 設定多個鍵值 mset key value key value 2 獲取 根據鍵獲取值,如果不存在此鍵則返回null get key 根據多個鍵獲取多個值 mget key...

redis資料庫常用雙向列表操作

list列表 雙向鍊錶結構 redis列表是簡單的字串列表,按照插入順序排序。你可以新增乙個元素到列表的頭部 左邊 或者尾部 右邊 list即可以作為 棧 也可以作為 佇列 操作 lpush list1 world 在list1頭部壓入乙個字串 lpush list1 hello 在list1頭部壓...

redis資料庫有序集合常用操作

redis 有序集合sset sorted set redis 有序集合和集合一樣也是string型別元素的集合,且不允許重複的成員。不同的是每個元素都會關聯乙個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。有序集合的成員是唯一的,但分數 score 卻可以重複。...