redis入門指南(1)

2021-10-25 14:18:42 字數 3633 閱讀 8562

redis是remote dictionary server(遠端字典伺服器)的縮寫,它以字典結構儲存資料,並允許其他應用通過tcp協議讀寫字典中的內容。redis字典中的鍵值除了可以是字串,還可以是其他資料型別。到目前為止redis支援的鍵值資料型別如下:

redis資料庫中的所有資料都儲存在記憶體中。由於記憶體的讀寫速度遠快於硬碟,因此redis在效能上對比其他基於硬碟儲存的資料庫有非常明顯的優勢。但是基於持久化這個問題,redis可以將記憶體中的資料非同步寫入到硬碟中,同時不影響繼續提供服務。

redis官網

1. wget 

2. tar -zvxf redis-6.0.10.tar.gz

3. mv /root/redis-6.0.10 /usr/local/redis

然後在/usr/local/redis目錄下執行:

4. make
安裝:

5. make prefix=/usr/local/redis install
使redis服務端以後臺程序方式啟動,更改其配置檔案設定daemonize屬性為yes:

6. vim /usr/local/redis/redis.conf
在/usr/local/redis目錄下啟動服務端:

7. ./bin/redis-server ./redis.conf
還可以把redis的配置檔案和二進位制檔案命令分別放置到指定資料夾,進行配置,設定開機啟動之類的操作就不細細列出了。

啟動客戶端 ./redis-cli

ping命令測試客戶端與redis連線是否正常:

redis 127.0.0.1:6379>ping

pong

redis 127.0.0.1:6379>echo hi

"hi"

redis的5種資料型別

字串型別

字串型別是redis中的最基礎的資料型別,它能儲存任何形式的字串,包括二進位制資料。乙個字串型別鍵允許儲存的資料的最大容量是512mb。

set key value

get key

mset key value [key value...]

mget key [key...]

字串型別是其他4種資料型別的基礎,其他資料型別和字串型別的差別從某種角度來說只是組織字串的形式不同。例如,列表型別是以列表的形式組織字串,而集合型別是以集合的形式組織字串。

雜湊型別

雜湊型別的鍵值也是一種字典結構,其儲存了字段和字段值的對映,但字段值只能是字串,不支援其他資料型別,換句話說,雜湊型別不能巢狀其他的資料型別。乙個雜湊型別鍵可以包含至多232-1個字段。

hset key field value

hget key field

hmset key field value[field value...]

hmget key field [field...]

雜湊型別適合儲存物件:使用物件類別和id構成鍵名,使用字段表示物件的屬性,而字段值則儲存屬性值。

列表型別

列表型別可以儲存乙個有序的字串列表,常用的操作是向列表兩端新增元素,或者獲得列表的某乙個片段。

lpush key value [value ...]

rpush key value [value ...]

列表型別內部是使用雙向鍊錶實現的,所以向列表兩端新增元素的時間複雜度為o(1),獲取越接近兩端的元素速度就越快。與雜湊型別最多能容納的字段數量相同,乙個列表型別鍵最多能容納232-1個元素。

集合型別

集合型別的常用操作是向集合中加入或刪除元素、判斷某個元素是否存在等,由於集合型別在redis內部是使用值為空的雜湊表實現的,所以這些操作的複雜度都是o(1)。最方便的是多個集合型別鍵之間還可以進行並集、交集和差集運算。

sadd key member [member ...]

srem key member [member ...]

smembers key //返回集合中所有元素

sismember key member //判斷元素是否在集合中

sdiff key [key ...] //對多個集合執行差集運算

sinter key [key ...] //對多個集合執行交集運算

sunion key [key ...] //對多個集合執行並集運算

集合型別跟列表型別有很多相似之處但是其唯一性可以區別開,集合型別是具有唯一性的而列表型別不具備。

有序集合型別

在集合型別的基礎上有序集合型別為集合中的每個元素都關聯了乙個分數,這使得我們不僅可以完成插入、刪除和判斷元素是否存在等集合型別支援的操作,還能夠獲得分數最高(或最低)的前n個元素、獲得指定分數範圍內的元素等與分數有關的操作。雖然集合中每個元素都是不同的,但是它們的分數卻可以相同。

zadd key score member [score member ...]

zscore key member

zrange key start stop [withscores]

zervrange key start stop [withscores]

有序集合與列表型別有些相似:

二者都i是有序的。

二者都可以獲得某一範圍的元素。

二者也有很大的區別:

列表型別是通過鍊錶實現的,獲取靠近兩端的資料速度極快,而當元素增多後,訪問中間資料的速度會較慢,所以它更加適合實現如「新鮮感」或「日誌」這樣很少訪問中間元素的應用。

有序集合型別是使用雜湊表和跳躍表實現的,所以即使讀取位於中間部分的資料速度也很快。(時間複雜度為o(log(n)))。

列表中不能簡單地調整某個元素的位置,但是有序集合可以。

有序集合比列表型別更耗費記憶體。 事務

redis中的事務是一組命令的集合。事務同命令一樣都是redis的最小執行單位,乙個事務中的命令要麼都執行,要麼都不執行。

redis> multi

okredis> sadd 'user : 1 : following' 2

queued

redis> sadd 'user : 2 : followers' 1

queued

redis> exec

1)(integer)1

2)(integer)1

事務的原理是先將屬於乙個事務的命令傳送給redis,然後再讓redis依次執行這些命令。

watch命令可以監控乙個或多個鍵,一旦其中有乙個鍵被修改(或刪除),之後的事務就不會執行。監控一直持續到exec命令。

expipe命令的使用方法為expipe key seconds,其中seconds引數表示鍵的過期時間,單位是秒。如要想讓session : 29e3d鍵在15分鐘後被刪除:

redis> expipe session : 29e3d 900

(integer) 1

ttl命令是乙個鍵還有多久時間會被刪除。返回值是鍵的剩餘時間(單位是秒)。

Redis入門指南

4.redis的通用命令 5.redis特性 6.redis持久化 redis 高效能的鍵值對 key value 資料庫。key定義的注意點 不要過長 不要過短 統一的命名規範 快取 任務佇列 訪問統計 資料過期處理 精確到毫秒 分布式集群架構中的session分離 1.概述 2.常用命令 擴充套...

Redis入門指南(二)

使用sort命令,操作集合類,和列表和有序集合類 sort key alpha 按照字典順序排列非數字。sort key desc by 引數,可以排序雜湊型別,甚至是字串型別 根據名稱 萬用字元 get 排序之後 獲取值 store 儲存 優化 sort是redis最強大最複雜的命令之一。使用不好...

Redis 指南(1) 簡介

1 儲存結構 有過指令碼語言程式設計經驗的讀者對字典 或稱對映,關聯陣列 資料結構一定很熟悉,如 dict key value 中 dict 是乙個字典結構變數,字串 key 是鍵名,而 value 是鍵值,在字典中我們可以獲取或設定鍵名對應的鍵值,也可以刪除乙個鍵。redis 是 remote d...