訊息中介軟體學習七--Redis(基礎知識)
阿新 • • 發佈:2020-09-23
1.官網:https://www.redis.net.cn/
2.概述
1.Redis是一個開源(BSD許可),記憶體資料結構儲存,用作資料庫,快取和訊息代理ps:lua指令碼可以將redis客戶端的多個命令打包送到伺服器一起執行,保證原子性
2.它支援資料結構,如字串,雜湊,列表,集合,帶有範圍查詢的排序集,
點陣圖,超級日誌,具有半徑查詢和流的地理空間索引
3.Redis具有內建複製,Lua指令碼,LRU驅逐,事務和不同級別的磁碟永續性,
並通過Redis Sentinel和Redis Cluster自動分割槽
4.您可以對這些型別執行原子操作,例如附加到字串;遞增雜湊值;
將元素推送到列表中;計算集合交集, 並集和差異;
或者在排序集中獲得排名最高的成員
5.為了實現其出色的效能,Redis使用記憶體資料集。
根據您的使用情況,您可以通過 每隔一段時間將資料集轉儲到磁碟或
通過將每個命令附加到日誌來保留它
如果您只需要功能豐富的網路記憶體快取,則可以選擇禁用永續性
6.Redis還支援簡單到設定的主從非同步複製,
具有非常快速的非阻塞第一次同步,
自動重新連線以及在網路分割上的部分重新同步。
其他功能包括:交易釋出/訂閱、Lua指令碼、鑰匙的生存時間有限、LRU逐出鑰匙、自動故障轉移
7.您可以使用大多數程式語言中的Redis
Redis是用ANSI C編寫的,適用於大多數POSIX系統,如Linux,* BSD,OS X,
沒有外部依賴性。Linux和OS X是Redis開發和測試的兩個作業系統,
我們建議使用Linux進行部署。
3.redis為什麼這麼快?
1.純記憶體操作
2.單執行緒操作,避免了頻繁的上下文切換(多執行緒需要佔用更多的CPU資源)
3.採用了非阻塞I/O多路複用機制
4.redis的資料結構
redis的資料結構為key---value儲存,Key:是String,Value有5個數據型別
1.String: 字串 2.Hash: 類似於map、可以放物件 3.List:linkedlist格式 支援重複的元素 4.Set:不允許重複且無序
5.Sortedset:不允許重複,且元素有順序
5.應用場景
1.快取資料(資料查詢,商品內容……)
2.任務佇列(秒殺、搶購、12306……)
3.應用排行榜、熱門列表、 最新動態
4.資料過期處理
5.分散式叢集架構中session的處理
6.時效性、訪問頻率、計數器
7.社交列表、記錄使用者判定資訊
8.交集、並集和差集、訊息佇列
6.redis在Linux中的操作
啟動方式:
cd /usr/local cd redis-4.0.8 cd src
1.src目錄下的./redis-server,這個需要一直保持啟動,
當其他操作的時候,ctrl+c退出,redis也退出了。不太方便
2.後臺啟動 1)到redis目錄 2)vim redis.conf 將daemonize no該為yes 3)到src目錄 :通過配置檔案啟動redis: ./redis-server ../redis.conf
3.使用redis指令碼設定開機自動啟動:啟動指令碼 redis_init_script 位於Redis的 /utils/ 目錄下。
瞭解就可以了,我們學習使用第二種就夠了
關閉:
在src目錄下:
./redis -cli -p 6379 shutdown
當然也可以用kill -9 程序號
redis的指令
通用指令
keys *
檢視所有key
flushall
情況資料庫
value為String型別
value為hash型別
value為list型別
lpush key value [value...] : l是left的縮寫 表示從連結串列左邊(連結串列頭)放入資料 lrange key start end : 檢視start---end中的資料,左包右包 end -1表示到最後 rpush key value [value...] :右邊插入資料 r是right的縮寫 lpop key : 彈出左邊第一個元素 rpop key : 彈出右邊第一個元素 llen key : 檢視連結串列的總長度 blpop key [key...] timeout : 左側阻塞式彈出 brpop key [key...] timeout : 右側阻塞式彈出 lpushx : 和lpush類似,但是lpushx會校驗key是否存在,若key不存在則不進行任何操作 rpushx : 和rpush類似,但是lpushx會校驗key是否存在,若key不存在則不進行任何操作 rpoplpush key1 key2 : 彈出key1的右邊的元素 放入key2左邊(醫院體檢業務,排隊做了一項,繼續排隊做第二項) brpoplpush : 阻塞版本 lindex key index : 獲取key中index位置的值,負數就反過來數,-1為最後一個 lrem key count value :
count>0從左邊刪除count個value count<0從右邊刪除count個value count=0刪除所有的value
value為set型別
sadd key element [element...] : set集合中新增元素
smembers key : 檢視集合所有的元素
sismember key element : 檢視元素是否屬於該集合,1存在 0不存在
srem key element [element...] : 刪除集合元素 |
scard key : 檢視集合元素數量
srandmember key [n] :
隨機獲取集合中某一個元素
n是正數:返回n個不重複的數
n是負數:返回n個可能重複的數 |
spop key [n] : 預設彈出一個元素,或者彈出指定個數的元素
sinter key1 key2 : 多個集合的交集
sdiff key1 key2.... : 返回第一個集合有 後面集合都沒有的元素(差集)
sunion key1 key2 key3…. : 所有集合的並集
sinterstore set set1 set2 : 找到set1與set2的交集 存放在set中
value為zset(sortedset)型別
zadd key score member1 score member2 : 新增元素 每個元素都會攜帶一個分數 zrange key start end [withscores] : 根據下標檢視元素 預設分數升序排序 zrevrange key start end [withscores] : 類似上面,反取 zrangebyscore key score1 socre2 : 取score1到score2分數 之間的元素 zrevrangebyscore key max min [withscores] : 反取 zrem key member : 刪除元素
**zcard key ** 個數 zscore key member :檢視某個元素的分數 zrank key member :檢視某個元素在集合中的排名,預設按分數升序(排名從0開始的) zrevrank key member : 反排名 zincrby key increment member: 為某個元素加分 **zcount key min max ** : 統計min到max分數間的個數 zremrangebyscore key min max : 根據分數段刪除 zremrangebyrank key start end : 根據排名刪除 zinterstore destination numkeys key [key...]:這裡numkeys表示需要做交集的key的個數 zunionstore destination numkeys key [key...]:這裡numkeys代表需要做並集的key的個數 |
學習來源:https://www.jianshu.com/p/60b9e30c6cf1
//Linux的五種IO模型(形象例項詳解)
https://blog.csdn.net/qq_36095679/article/details/89641867
https://www.cnblogs.com/jasonZh/p/9513948.html