_._
_.-``__ ''-._
_.-`` `. `_. ''-._ 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是乙個開源的 高效能的 基於鍵值對的快取與儲存系統,通過提供多種鍵值資料型別來適應不同場景下的快取和儲存需...