日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis学习笔记之Redis的对象

發布時間:2024/7/19 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis学习笔记之Redis的对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  類型與編碼:

  typedef struct redisObject {

?  ???????????? unsigned type:4;//類型

  ????????????? unsigned encoding:4;//編碼

  ????????????? void *ptr;//指向底層實現數據結構的指針

  } robj;

1.字符串對象

  編碼: int,整數值,而且這個整數值可以用long類型來表示

  raw,字符串值,而且字符串值的長度大于32字節,SDS的內存與redisObject內存不連續

  embstr,字符串值,而且字符串值的長度小于32字節,SDS的內存與redisObject內存是連續的

?  ????? 編碼轉換:當對字符串進行操作時引起字符串類型變化,那么字符串對象的編碼也會隨即改變,比如在一個10后面加上“days ago”,那么字符串的編碼將從int變為raw

2.列表對象

  編碼: ziplist,需滿足以下兩個條件1)列表對象保存的所有字符串元素的長度都小于64字節(可修改);2)列表對象保存的元素數量小于512個(可修改)

?  ?????? ? linkedlist,不滿足上述兩個條件的列表對象編碼都采用linkedlist

  筆者實際操作之后發現,不管什么情況,結果都如下:

  127.0.0.1:6379> object encoding test

  "quicklist"

???  ??? quicklist:A doubly linked list of ziplists,一個ziplist的雙向鏈表

3.哈希對象

  編碼: ziplist,先將一個鍵值對的鍵推到表尾,然后將這個鍵值對的值推到表尾,同樣需要滿足以下兩個條件1)哈希對象保存的所有鍵值對的鍵和值得字符串長度都小于64(可修改)字節2)哈希對象保存的鍵值對的數量小于512(可修改)

? ? ? hashtable,底層采用字典實現

4.集合對象

  編碼:intset,集合對象使用整數集合作為底層實現,條件1)集合對象保存的所有元素都是整數2)集合對象保存的元素個數不超過512個

? ? ? hashtable,使用字典作為底層實現,字典的每一個值都是一個字符串對象,每個字符串對象都包含一個集合元素,字典的值全部為null

5.有序集合對象

  編碼:ziplist,使用壓縮列表作為底層實現,要求1)有序集合保存的元素數量小于128,2)有序集合保存的所有元素成員的長度都小于64字節

? ? ? skiplist,使用zset作為底層實現,一個zset結構同時包含一個字典和一個跳躍表;同時使用字典和跳躍表是為了1)保留字典以O(1)的時間復雜度查找成員的分值這一特性2)保留跳躍表執行范圍型操作的優點

轉載于:https://www.cnblogs.com/songxh-scse/p/6692433.html

總結

以上是生活随笔為你收集整理的Redis学习笔记之Redis的对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。