redis 筆記02

來源:互聯網
上載者:User

標籤:

對象

1. Redis資料庫中的每個索引值對的鍵和值都是一個對象。

2. Redis共有字串、列表、雜湊、集合、有序集合五種類型的對象,每種類型的對象至少都有兩種或者以上的編碼方式,不同的編碼可以在不同的使用情境上最佳化對象的使用效率。

3. 伺服器在執行某些命令之前,會先檢查給定鍵的類型能否執行指定的命令,而檢查一個鍵的類型就是檢查鍵的值對象的類型。

4. Redis的對象系統帶有引用計數實現的記憶體回收機制,當一個對象不再被使用時,該對象所佔用的記憶體就會被自動釋放。

5. Redis會共用值為0到9999的字串對象。Redis只對包含整數值的字串對象進行共用。

6. 對象會記錄自己的最後一個被訪問的時間,這個時間可以用於計算對象的空轉時間,用以判斷回收記憶體。

 

1. 每次當我們在Redis的資料庫中新建立一個索引值對時,我們至少會建立兩個對象,一個對象用作索引值對的鍵(鍵)對象,另一個對象用作索引值對的值(值對象)

2. Redis中的每個對象都由一個redisObject結構表示,該結構中和儲存資料相關的三個屬性分別是type屬性,encoding屬性和ptr屬性。

3. 對於Redis資料庫儲存的索引值對來說,鍵總是一個字串對象,而值則可以是字串對象、列表對象、雜湊對象、集合對象或者有序集合對象的其中一種。

4. type key 命令返回該鍵對應的值對象的類型,而不是鍵對象的類型。type的傳回值:string,list,hash,set,zset

5. 對象的ptr指標指向對象的底層實現資料結構,而這些資料結構由對象的encoding屬性決定。encoding屬性記錄了對象所使用的編碼,也即是說這個對象使用什麼資料結構

    (字典,鏈表等)作為對象的底層實現。

6. 每種類型的對象都至少使用了兩種不同的編碼。Redis可以根據不同的使用情境來為一個對象設定不同的編碼,從而最佳化對象在某一情境下的效率。

7. 使用OBJECT ENCODING命令可以查看一個資料庫的值對象的編碼。

8. 字串的編碼可以是int,raw 或者 embstr。在條件滿足的情況下,int和embstr會被轉換成raw編碼的字串對象。

9. 字串常用命令:

    SET , GET , APPEDN , INCRBYFLOAT(浮點數加法),INCRBY(整數加法),DECRBY(整數減法),STRLEN(返回字串的長度),SETRANGE(設定特定索引的值),GETRANGE(擷取特定索引的值)

10. 列表對象的編碼可以是ziplist或者linkedlist。

11. 列表常用命令:

      LPUSH(新元素添加到表頭),RPUSH(新元素添加到表尾),LPOP(擷取並刪除表前端節點),RPOP(擷取並刪除表尾節點),LINDEX(擷取指定索引的元素),LLEN(擷取列表長度),

      LINSERT(在列表指定位置插入元素),LREM(刪除不在指定索引範圍內的節點),LSET(更新指定位置上的節點)

12. 雜湊對象的編碼可以是ziplist或者hashtable .

13. 雜湊對象常用命令:

      HSET(添加新節點),HGET(擷取對應的值),HEXISTS(判斷指定的鍵是否存在),HDEL(刪除指定的節點),HLEN(返回索引值對數量),HGETALL(返回所有索引值對)

14. 集合對象的編碼可以是intset或者hashtable

15. 集合對象常用命令:

      SADD,SCARD(擷取元素數量),SISMEMBER(判斷元素是否存在),SMEMBERS(返回所有索引值),SRANDMEMBER(隨即返回一個元素),SPOP(隨即擷取並刪除元素),SREM(刪除所有給定元素)

16. 有序集合對象,編碼可以是ziplist或者skiplist

17. 有序集合對象常用命令:

      ZADD,ZCAR(擷取集合元素數量),ZCOUNT(擷取給定範圍內節點數量),ZRANG(從表頭到表尾,返回給定索引範圍內的所有元素),ZREVRANGE(從表尾到表頭,返回給定索引範圍內的所有元素),

      ZRANK(從表頭向表尾,返回節點排名),ZREVRANK(從表尾到表頭,返回節點排名),ZREM(刪除),ZSCORE(擷取分值)

18. Redis中用於操作鍵的命令基本上可以分為兩種類型:

     1). 可以對任何類型的鍵執行,比如:DEL命令,EXPIRE命令、RENAME命令、TYPE命令 、OBJECT命令等。

     2). 只能對特定類型的鍵執行:

          SET,GET,APPEND,STRLEN等命令只能對字串鍵執行;

          HDEL,HSET,HGET,HLEN等命令只能對雜湊鍵執行;

          RPUSH,LPOP,LINSERT,LLEN等命令只能對列表鍵執行;

          SADD,SPOP,SINTER,SCARD等命令只能對集合鍵執行;

          ZADD,ZCARD,ZRANK,ZSCORE等命令只能對有序集合鍵執行。

19. Redis除了會根據值對象的類型來判斷鍵是否能夠執行指定的命令之外,還會根據值對象的編碼方式,選擇正確的命令實現代碼來執行命令,決定調用哪種結構的函數來執行。

20. 記憶體回收:當對象的引用計數值變為0時,對象所佔用的記憶體會被釋放。

 

redis 筆記02

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.