redis系列文章:
https://liudongdong.top/categories/redis
本篇來源:
https://liudongdong.top/archives/redissan-redis-ji-ben-zhi-shi
公眾號:雨中散步撒哈拉
備注:歡迎關(guān)注公眾號窥妇,一起學(xué)習(xí),共同進(jìn)步怪蔑!安裝好之后里覆,redis是什么,怎么用缆瓣,目前還處于迷茫階段喧枷。接下來不管redis是什么,是騾子是馬弓坞,拉出來遛遛隧甚。先來體驗(yàn)一下redis的魅力。
一渡冻、遠(yuǎn)程連接
1. 下載
關(guān)注公眾號雨中散步撒哈拉
戚扳,回復(fù)關(guān)鍵詞020
,進(jìn)行下載
我這邊推薦倆個工具rdm或者another-redis
<figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">image.png</figcaption>
2. 連接
填寫遠(yuǎn)程信息族吻,進(jìn)行連接
<figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">image.png</figcaption>
another-redis界面
<figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">image.png</figcaption>
rmd界面
<figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">image.png</figcaption>
二帽借、測試性能
Redis 自帶一個壓測工具 redis-benchmark珠增,有以下可選參數(shù)
<figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">image.png</figcaption>
1. 進(jìn)入容器
docker exec -it docker_redis /bin/bash# 進(jìn)入容器執(zhí)行redis-benchmark -p 6379 -c 100 -n 100000
<figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">image.png</figcaption>
2. 查看終端輸出
<figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">image.png</figcaption>
上半部分代表 100 個并發(fā)寫入 10w 條數(shù)據(jù),每次寫入 3 個字節(jié)宜雀,keep-alive:1 代表服務(wù)器數(shù)量只有 1 臺切平,并且在沒有開啟多線程的情況下只花了 2.86s ( tips:多線程是 redis 6.0 新增的 )
下半部分代表在 42.815ms 內(nèi)處理完成全部請求
3. 查看檢測設(shè)備
<figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">image.png</figcaption>
三、Redis 基本知識
redis官網(wǎng):http://redis.cn/
Redis 是一個基于 C 語言編寫的辐董,是可基于內(nèi)存也可持久化的日志型 K-V 數(shù)據(jù)庫悴品,并提供多種語言的 API〖蚝妫可用作數(shù)據(jù)庫苔严,緩存和消息中間件
Redis 會周期性的把更新的數(shù)據(jù)寫入磁盤或是把修改操作寫入到追加的記錄文件,并在此基礎(chǔ)上完成主從復(fù)制
1. Redis 能干啥孤澎?
- 支持內(nèi)存存儲和持久化 ( EDB / AOF )
- 效率高届氢,支持高并發(fā),可以用做高速緩存
- 可以用于發(fā)布-訂閱模式
- 地圖信息分析
- 計(jì)數(shù)器覆旭,計(jì)時器
- 數(shù)據(jù)類型多樣
- 支持集群和事務(wù)
- …
2. Redis基本命令
1. redis數(shù)據(jù)庫
Redis 默認(rèn)有 16 個數(shù)據(jù)庫退子,起始數(shù)據(jù)庫為 0 號,可以使用命令
<figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">image.png</figcaption>
切換數(shù)據(jù)庫
select 號數(shù)
清空當(dāng)前數(shù)據(jù)庫
flushdb
清除所有的數(shù)據(jù)庫
flushall
2. redis中的key
查看當(dāng)前數(shù)據(jù)庫所有的 key
keys *
3. Redis單線程&多線程
Redis 在 6.0 之前只是單線程的型将,6.0 之后則支持多線程了寂祥,但是 Redis 在單線程下依舊很快,這是為什么呢七兜?
其實(shí)丸凭,嚴(yán)格來說,Redis Server 是多線程的腕铸,只是它請求處理的整個流程是單線程處理的惜犀,所以所謂的 Redis 單線程快指的是其請求處理過程使用單線程時非常快狠裹,其中的原因有以下幾點(diǎn)
- 純內(nèi)存操作虽界,并且 Redis 是基于 C 編寫的
- 使用 IO 多路復(fù)用
- 非 CPU 密集型任務(wù)
- 單線程帶來的優(yōu)勢
- 沒有多線程的上下文切換造成的開銷
- 沒有訪問共享資源加鎖造成的開銷
Redis 6.0 引入的多線程其實(shí)是用來完成請求數(shù)據(jù)的協(xié)議解析,而對于請求處理階段依然是單線程排隊(duì)處理的
4. 題外話
為什么 Redis 選擇 6379 作為端口號涛菠?
6379 在手機(jī)按鍵上是 MERZ 對應(yīng)的號碼浓恳,而 MERZ 取自意大利女歌手 Alessia Merz 的名字,Redis 作者 Antirez 早年看電視節(jié)目碗暗,覺得 Merz 在節(jié)目中的一些話愚蠢可笑颈将,Antirez 喜歡造“梗”用于平時和朋友們交流言疗,于是造了一個詞 "MERZ"晴圾,形容愚蠢,與 "stupid" 含義相同
后來 Antirez 重新定義了 "MERZ" 噪奄,形容”具有很高的技術(shù)價值死姚,包含技藝人乓、耐心和勞動,但仍然保持簡單本質(zhì)“
四都毒、RedisKey 的基本命令
創(chuàng)建一個鍵值對
set key value
刪除鍵值對
del key
查看當(dāng)前數(shù)據(jù)庫中所有鍵
keys *
判斷是否存在某個鍵色罚,如果存在則返回 1,否則返回 0
exists key
移動指定 key 到指定庫
move key 庫號
為 key 設(shè)置過期時間
expire key 過期時間/s
然后使用命令
ttl key
查看該 key 還有多久過期账劲,如果該 key 不會過期則返回 -1戳护,該 key 不存在則返回 -2,否則返回過期時間的倒計(jì)時
查看 key 對應(yīng) value 的數(shù)據(jù)類型
type key