Java中redis的基本類型
redis存儲數(shù)據(jù)的基本類型有:string(字符串類型)、hash(散列類型)、list(列表類型)、set(集合類型)、zset(有序集合類型)。
redis中的每個對象都由一個redisObject結(jié)構(gòu)來表示:
/*
?* Redis 對象
?*/
typedef struct redisObject {
? ? // 類型
? ? unsigned type:4; ? ? ? ?
? ? // 不使用(對齊位)
? ? unsigned notused:2;
? ? // 編碼方式
? ? unsigned encoding:4;
? ? // LRU 時間(相對于 server.lruclock)
? ? unsigned lru:22;
? ? // 引用計數(shù)
? ? int refcount;
? ? // 指向?qū)ο蟮闹?
? ? void *ptr;
} robj;和保存數(shù)據(jù)有關(guān)的三個屬性是type、encoding和ptr屬性。
對象類型分為下邊這幾個,我們是用type命令可以查看對象類型
/* ?* 對象類型 ?*/ #define REDIS_STRING 0 #define REDIS_LIST 1 #define REDIS_SET 2 #define REDIS_ZSET 3 #define REDIS_HASH 4
對象的ptr指針指向?qū)ο蟮牡讓訉崿F(xiàn)數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)由對象的encoding屬性決定。
編碼類型:
/* ?* 對象編碼 ?* ?* 像 String 和 Hash 這樣的對象,可以有多種內(nèi)部表示。 ?* 對象的 encoding 屬性可以設(shè)置為以下域的任意一種。 ?*/ #define REDIS_ENCODING_RAW 0 ? ? /* Raw representation 簡單動態(tài)字符串*/ #define REDIS_ENCODING_INT 1 ? ? /* Encoded as integer long類型的整數(shù)*/ #define REDIS_ENCODING_HT 2 ? ? ?/* Encoded as hash table 字典*/ #define REDIS_ENCODING_ZIPMAP 3 ?/* Encoded as zipmap 壓縮字典*/ #define REDIS_ENCODING_LINKEDLIST 4 /* Encoded as regular linked list 雙端鏈表*/ #define REDIS_ENCODING_ZIPLIST 5 /* Encoded as ziplist 壓縮列表*/ #define REDIS_ENCODING_INTSET 6 ?/* Encoded as intset 整數(shù)集合*/ #define REDIS_ENCODING_SKIPLIST 7 ?/* Encoded as skiplist 跳躍表和字典*/ #define REDIS_ENCODING_EMBSTR 8 ?/* Embedded sds string encoding embstr編碼的簡單動態(tài)字符串*/
可以通過object encoding命令查看數(shù)據(jù)庫鍵的值對象的編碼
通過encoding屬性來設(shè)定對象所使用的編碼,而不是為特定類型的對象關(guān)聯(lián)一種固定的編碼,極大提升了redis的靈活性和效率,根據(jù)不同的使用場景來為對象設(shè)置不同的編碼
不同數(shù)據(jù)結(jié)構(gòu)的編碼方式:

到此這篇關(guān)于Java中redis的基本類型的文章就介紹到這了,更多相關(guān)redis類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于CyclicBarrier和CountDownLatch的使用區(qū)別說明
這篇文章主要介紹了基于CyclicBarrier和CountDownLatch的使用區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
springboot如何使用assembly打包項目和啟動腳本
這篇文章主要介紹了springboot如何使用assembly打包項目和啟動腳本問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
深入理解java動態(tài)代理的兩種實現(xiàn)方式(JDK/Cglib)
本篇文章主要介紹了java動態(tài)代理的兩種實現(xiàn)方式,詳細的介紹了JDK和Cglib的實現(xiàn)方法,具有一定的參考價值,有興趣的可以了解一下2017-04-04
solr 配置中文分析器/定義業(yè)務(wù)域/配置DataImport功能方法(測試用)
下面小編就為大家?guī)硪黄猻olr 配置中文分析器/定義業(yè)務(wù)域/配置DataImport功能方法(測試用)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09

