redis 保存 array list 区别_Redis科普篇
這是學習Java的小姐姐第53篇原創文章
前言
hello,好久不見,又斷更了一段時間。同事大部分離職了,但是活還是一樣,所以只能硬著頭皮頂上。現在總算歇會了,決定開啟Redis源碼系列,希望不要啪啪啪打臉。
什么是redis?
Redis是一種基于鍵值對(key-value)的NoSQL數據庫,主要的數據類型包括String(字符串),hash(哈希),list(列表),set(集合),zset(有序集合),bitmaps(位圖),GEO(地理信息定位)等。
注意:如果面試問Redis數據類型,前五個是基礎,必須答對,后面兩個是亮點。
redis的優勢
1.數據存儲在內存中,讀取和寫入速度快。如果需要持久化,可以開啟相關配置,數據定期保存在硬盤上。
2.使用單線程,避免線程競爭,也避免線程之間上下文切換消耗。
3.主節點和從節點之間可以復制,水平擴展,突破單機部署的限制。
4.提供哨兵和集群方式,保證有節點發生故障,保存整個服務的高可用性。
注意:以上的優點以后都會單開章節來討論,現在有個大概印象就行,不用死記硬背?。
redis基本安裝
上面講的是不是太空了,眼睛說記住了,腦子說沒有?。那我們實操下,在linux上安裝redis服務,看看怎么玩?至于windows比較簡單,屬于開箱即用的,這邊就不寫了。
1.下載壓縮包
先去官網下載http://download.redis.io/releases/安裝包,建議是下載redis4。之后看底層結構也是使用的redis4。
redis4和redis3的區別:
1.在redis4中,string類型的底層結構針對不同長度的字符串分為了sdshdr5,sdshdr8,sdshdr16,sdshdr32,sdshdr64等多種結構體,更加節約內存,而redis3只使用了int,embstr,raw。
2.在redis4中,持久化可以使用RDB和AOF混合方式。
2.上傳到服務器并解壓
? ?通過遠程管理工具,將壓縮包拷貝到Linux服務器中,執行解壓操作
3.進入src目錄,執行make install進行安裝
4.開啟后臺啟動配置
我們打開redis.conf文件,修改daemonize為yes,讓其能在后臺運行。
5.啟動
使用redis-server啟動redis,注意端口號為6379.
6.連接客戶端
進入src目錄,使用redis-cli連接客戶端。
redis常用API
string類型
1.設置值 set [key] [value] [expried time] [nx|xx]
上面表示設置key的字符串,值為value,過期時間為expried time 。nx表示不存在才能設置成功,用于新增;xx表示存在才能設置成功,用于更新。
我們首先給str變量設置了hello,然后嘗試用nx來更新str,但是發現更新失敗了,因為nx表示str不存在的時候才能設置,現在str是存在的。最后用xx來更新,發現是更新成功的。
2.獲取值 get key
3.批量設置值 mset [key value] [key value] [key value]
數據設置進去按組來劃分的,每個key對應一個value,當設置成功后查詢發現,出來是亂碼,不是我們設置的中文。
其實這不是亂碼,只是客戶端顯示問題,我們只需要在啟動客戶端的時候加上--raw,指定其顯示格式即可。
4.批量獲取值 mget [key] [key] [key]
hash類型
1.設置值 hset key field value
2.獲取值hget key field,效果如上
3.批量設置值 hmset key [field] [value] [field] [value]
4.批量獲取值 hmget key [field] [field] [field]
5.獲取某個key所有的fields hkeys key
list類型
1.從list的左側插入新數據 lpush key value
在list列表的左側插入三個元素a,b,c,返回值為當前list的長度3。
2.從list的右側插入新數據 rpush key value
在list列表的右側插入兩個元素d ,e,返回值為當前list的長度5。
3.查詢list的所有元素
這邊需要注意的是往左節點插入的三個元素順序,lpush每次將新元素插入到列表的頭部,所以順序為 c,b,a。
4.獲取列表長度llen key
5.從左側刪除元素 lpop key
刪除鏈表的第一個元素,返回值為刪除的元素值c。再查詢下list現在的元素,分別是b,a,d,e。
6.從右側刪除元素 rpop key
與上面從左側刪除元素一樣,返回值也為刪除的元素。
7.刪除指定元素 lrem key count value
刪除指定元素,重點是count,這邊count分為三種情況:
1).當count>0,從左到右,最多刪除count個元素。
2).當count<0,從右到左,最多刪除count個元素。
3).當count=0,刪除所有滿足條件的元素。
set類型
1.添加元素 sadd key[field] [field] [field]
往myset1中插入三個字符串,分別是hello,world,java,返回值為插入成功的數值。
2.刪除元素 srem key [field] [field]
3.計算元素個數 scard key
4.判斷元素是否存在sismember key [field]
之前刪除了myset中的hello元素,所以第一條語句的返回值為0,表示不存在。而world沒有刪掉,所以返回值為1,表示存在。
5.獲取所有的元素sismembers key
6.集合之間的并集sunion [key] [key]
我們先看myset1和myset2的數據,然后使用sunion來獲取他們的并集。
7.集合之間的交集 sinter [key] [key]
8.集合之間的差集 sdiff [key] [key]
這邊要注意key的前后區別,如果是sdiff myset1 myset2,意思是myset1除去兩者的交集,所以結果是world和cc。
如果反之,亦然。
zset類型
1.添加元素 zadd key [score member] [score member]
2.計算長度 zcard key
3.計算排名 zrank key member(zrevrank key member)
myzset中一共有三名學生,張三,李四,王五,他們分數分別為80分,90分,70分,那他們的排序是第一名李四90分,第二名張三80分,第三名王五70分。
zrank表示正排名,返回值為下標。zrevrank表示逆排名,返回值也是下標。
結語
這篇主要是Redis的入門課程,主要從Redis是什么,哪些優點,Linux上如何快速安裝,常見的數據結構和API使用。強調的是先從總體入手,對其有個大概印象,了解其和關系型數據庫的區別。至于一些常見數據類型的適用場景,底層設計,我們下篇見。
如果覺得寫得還行,麻煩給個贊?,您的認可才是我寫作的動力!
如果覺得有說的不對的地方,歡迎評論指出。
好了,拜拜咯。
參考資料
redis 中文存儲亂碼問題
Redis開發與運維
Redis深度歷險:核心原理與應用實踐
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的redis 保存 array list 区别_Redis科普篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机谣言之网线的做法
- 下一篇: 果粉请注意!MacBook镜头不可遮挡,