Redis學習筆記 一

2021-07-14 06:59:56 字數 2701 閱讀 5026

工作百無聊賴,準備把自己想學的東西挨個學一遍,最近突然發現如果你學了乙個東西,但是毫無記錄只是看了一些書的話,這樣過去後很快就忘記了。所以我覺得很必要採用一種方式把看到的東西記下來,這樣可以加深記憶,也可以在以後回顧的時候一眼看到一項技術中的重點,方便回顧和查詢。

最近首先想學一下redis,因為專案中可能會用到。

一. 概述

redis是一款開源的key-value資料庫,使用c語音編寫。它支援網路,可基於記憶體,也可持久化到磁碟的資料庫。它和memcached類似。redis讀取速度非常快,在一款普通的筆記本上每秒可以讀取超過十萬個鍵值。redis同樣是乙個多面手,雖然是一款資料庫,但是目前越來越多的人把它當做快取、佇列系統等來使用。還支援為每個鍵值設定生存時間(time to live, ttl),生存時間到期後會自動被刪除。這一特點使得它成為作為快取乙個非常好的優勢。

作為一款key-value資料庫,它支援儲存的型別有以下幾種:

二. redis和mencached比較

redis和memcached都可以用來充當快取。redis是單執行緒的,memcached支援多執行緒,所以在多核伺服器上memcached效能會高一些。但redis效能在絕大部分條件下都不會成為瓶頸。所以在選擇redis或者memcached應該更關注功能,如果需要用到高階的資料型別或者持久化功能,那麼redis會比memcached更合適一些。

在應用場景方面,如果只是單純的使用key-value,則memcached效能會高一些,如果想要使用redis的hash來做一些復合的儲存,則redis效能會高。因為復合資料可以一次獲取到你想要的內容,減少io的次數。而memcached不支援復合資料結構的儲存,在通常場景下網路io的次數相比使用redis會高很多。

如果你的場景對資料持久化和資料同步要求很高,則需要使用redis,因為memcached不支援資料持久化。在產品公升級或者重啟系統後memcached的資料會丟失,而redis不會。

三. redis基本命令

啟動redis:./redis-server啟動後埠6379

退出redis:ctrl+c或者redis-cli shutdown

收到shutdown命令後,會先斷開客戶端,然後根據配置檔案進行持久化,最後完成退出。

連線redis server:redis-cli -h 127.0.0.1 -p 6379

檢視客戶端是否連線正常:redis-cli ping

進入某個資料庫:select 1

redis是多資料庫,不支援資料庫有自己的名字,各個資料庫都是統一編號的,編號從0開始,預設支援16個資料庫。所有資料庫都只能使用乙個密碼,不支援每個資料庫不同的密碼。所以儲存不同應用的資料不應該放到同乙個redis例項下的不同資料庫,而應該使用不同的redis例項來儲存不用應用的資料。redis非常輕量級,乙個例項也只佔1mb左右的記憶體。

匹配出符合要求的key:key [pattern]正規表示式匹配出所有符合的key。

判斷鍵是否存在:exists key存在則返回1,不存在返回0。

刪除鍵:del key

查詢鍵的型別:typekey

獲取/指定字串二進位制:getbit key 1獲取key二進位制的第一位值,setbit key 1 0設定key二進位制第一位的值為0

遞增:incr key

如果key所對應的字串的內容是整數形式,則可以通過該命令來對整數自增1。incr 是有鎖的,可以用來在併發情況下給應用獲取唯一的id或序列編號等。

遞增指定數字:incrby key n

給key的值增加2。

鍵名設定慣例:物件型別:物件id:物件屬性

redis對於鍵的名沒有什麼強制要求,但比較好的一種寫法是 「物件型別:物件id:物件屬性」 來命名乙個鍵,如使用 user:1:friends來儲存id為1的使用者的好有列表。對於多個單詞,則推薦使用「.」來分隔比較好。

遞減:decr key

給key遞減1

減去某個值:decrby key 2

給key減去2

浮點數加減:incrbyfloat key 2.1

字串拼接:

set key hello獲取字串長度:strlen key

乙個英文本母長度為1,乙個漢字長度為3

同時設定多個鍵值:

mset key1 value1 key2 value2 key3 value3

同時獲取多個鍵值:

mget key1 key2

返回結果為:

1)value1

2)value2

準備利用2-3周的時間吧redis基礎知識全都學習一遍,這是第一天的內容,接下來繼續,加油!

已經浪費了太多時間,不想繼續下去,希望看到自己每天進步的樣子。

(未完待續)

redis學習筆記(一)

版本 4.0.2 安裝 yum install gcc c 若連線失敗,可能是linux未開啟ssh服務,開啟命令 需要root賬戶 如下 開啟服務 service sshd start 關閉防火牆 etc init.d iptables stop ps 此期間可能linux網路連線中斷,請注意 下...

redis學習筆記一

最近開始儲備一些知識點,以下為redis的學習筆記。簡介 remote dictionary server redis 是乙個由salvatore sanfilippo寫的key value儲存系統。redis是乙個開源的使用ansi c語言編寫 遵守bsd協議 支援網路 可基於記憶體亦可持久化的日...

redis 學習筆記(一)

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