Redis 學習筆記(1)

2021-09-24 11:36:19 字數 3765 閱讀 8074

_._

_.-``__ ''-._

_.-`` `. `_. ''-._ redis 5.0.5 (00000000/0) 64 bit

.-`` .-```. ```\/ _.,_ ''-._

( ' , .-` | `, ) running in standalone mode

|`-._`-...-` __...-.``-._|'` _.-'| port: 6379

| `-._ `._ / _.-' | pid: 118

`-._ `-._ `-./ _.-' _.-'

|`-._`-._ `-.__.-' _.-'_.-'|

| `-._`-._ _.-'_.-' |

`-._ `-._`-.__.-'_.-' _.-'

|`-._`-._ `-.__.-' _.-'_.-'|

| `-._`-._ _.-'_.-' |

`-._ `-._`-.__.-'_.-' _.-'

`-._ `-.__.-' _.-'

`-._ _.-'

`-.__.-'

root@8427640798c6:/data# redis-server -v

redis server v=5.0.5 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=4d0898999c5f857

redis作為非常流行的基於鍵值對的nosql資料庫,由於其所有資料都儲存在記憶體中的特性,擁有驚人的讀寫能力。

同時redis還可以將記憶體的資料利用快照和日曆的形式儲存在硬碟上,這樣在發生斷電的適合記憶體中的資料就不會丟失。

速度快,如上文所述,redis的資料都是儲存在記憶體之中,同時它使用c語言實現的,採用了單執行緒的架構,預防了多執行緒可能帶來的競爭問題。

基於鍵值對的資料結構伺服器。

鍵過期功能,可以用來實現快取;訂閱功能;lua指令碼;流水線方式。

簡單而穩定

客戶端程式語言多,如python和nodejs

持久化主從複製

高可用和分布式

對於超大規模的資料,經濟成本較高

對於冷資料,放在記憶體中其實是一種比較浪費的方式

因此要合理規劃合理分配,將各種資料庫的優點相結合。

通過下述命令可以啟動乙個redis容器,名為「some-redis」,"-d"代表服務在後台執行。

docker run --name some-redis -d redis
但如果你想將redis建立的資料持久儲存,你應該使用:

如果你使用過vs code裡面的docker外掛程式,可以通過「attach shell」進入互動式環境,當然也可以使用命令:

docker exec -it some-redis /bin/bash
這句指令也適用於mysql之類的資料庫。

這裡所講的redis資料型別有五種指的是對於鍵值對資料型別中的「值」。對於鍵來說一些常用的命令有:

keys *                   //遍歷所有鍵,一般不在生產環境使用,會造成阻塞。

dbsize //列印鍵的個數

exists key //判斷鍵是否存在

del key //刪除鍵

expire key seconds //設定鍵的過期時間

setex key seconds value //建立鍵並設定過期時間

type key //判斷鍵的資料結構型別

object encoding key //查詢內部結構內部編碼

rename key newkey //有重複會覆蓋

renamenx key newkey

randomkey

persist key //會清除過期設定

字串常用的幾個比如:

set key value [seconds]

get key

mset key value key1 value1...

mget key key1

incr key //自增

其實類似於python中的字典:

hset key field value

hget key field

hdel key field

hlen key //計算field的個數

hkeys key

hvals key //獲取所有的field,val

"rpush rider faiz kaisa delta"代表從右向左依次插入元素"faiz ,kaisa ,delta"但是注意的是這種插入是類似棧插入,因此使用   "lrange rider 0 -1"代表從左邊開始輸出0《開始》到-1《最後》的資料,順序應該是"faiz, kaisa, delta"

"lrange rider 0 1"代表從第0個位置到第1個位置,要注意的是和很多程式語言左閉右開不一樣,redis中兩邊資料結構都是閉合的。

還有諸如"lindex rider 0","lpop"與"rpop","lset rider faiz faizbomb

sadd key element1 element2 ..

srem key element1

scard key //計算個數

sismember key element //判斷是否存在其中

spop key //隨機跳出元素

smembers key //列印所有元素

除此之外,還有一些集合之間的操作:

sinter set1 set2           //&

sunion set1 set2 //|

sdiff set1 set2

sinterstore set_inter set1 set2

//其他同

zadd key score member

zcard key

zscore key member

zrank key member \\ zrevrank key member 0~n-1

zrem score member

zincrby key mumber member

zcount key min max //輸出這個範圍的值個數,左閉右閉

scan 可以用來漸進式遍歷所有的元素,但是如果在scan過程**現了值的改變,可能無法完全遍歷

redis內建了16個資料庫,通過select num選擇,預設為0;但是不推薦使用,因為其單執行緒的特性,所以不如開多個埠利用多cpu的特性處理多資料庫的問題呢。

Redis學習筆記1

問題 1.正常的命令請求是需要經過查詢分析器和查詢優化器來進行處理,但是redis不需要,因為redis資料的儲存是基於記憶體的 2.對於set資料結構操作的時候,smembers命令可以獲取到集合中包含的所有元素 但是集合包含的元素非常多的時候,該命令執行的速度可能會很慢,要謹慎使用該命令 3.對...

Redis學習筆記(1)

nosql nosql not only sql 意即 不僅僅是sql 泛指非關係型的資料庫。隨著網際網路web2.0 的興起,傳統的關聯式資料庫在應付web2.0 特別是超大規模和高併發的sns型別的web2.0純動態 在某些場景下暴露出許多難以解決的問題,如效能瓶頸的問題。nosql資料庫的產生...

Redis學習筆記1 Redis介紹

目錄 1 redis是什麼 2 redis的特點 3 redis 優勢 4 redis與其他key value儲存有什麼不同?附 什麼是bsd協議 附 什麼是原子性,什麼是原子性操作?redis是乙個開源的 高效能的 基於鍵值對的快取與儲存系統,通過提供多種鍵值資料型別來適應不同場景下的快取和儲存需...