Java中redis的基本類型
redis存儲(chǔ)數(shù)據(jù)的基本類型有:string(字符串類型)、hash(散列類型)、list(列表類型)、set(集合類型)、zset(有序集合類型)。
redis中的每個(gè)對(duì)象都由一個(gè)redisObject結(jié)構(gòu)來(lái)表示:
/*
?* Redis 對(duì)象
?*/
typedef struct redisObject {
? ? // 類型
? ? unsigned type:4; ? ? ? ?
? ? // 不使用(對(duì)齊位)
? ? unsigned notused:2;
? ? // 編碼方式
? ? unsigned encoding:4;
? ? // LRU 時(shí)間(相對(duì)于 server.lruclock)
? ? unsigned lru:22;
? ? // 引用計(jì)數(shù)
? ? int refcount;
? ? // 指向?qū)ο蟮闹?
? ? void *ptr;
} robj;和保存數(shù)據(jù)有關(guān)的三個(gè)屬性是type、encoding和ptr屬性。
對(duì)象類型分為下邊這幾個(gè),我們是用type命令可以查看對(duì)象類型
/* ?* 對(duì)象類型 ?*/ #define REDIS_STRING 0 #define REDIS_LIST 1 #define REDIS_SET 2 #define REDIS_ZSET 3 #define REDIS_HASH 4
對(duì)象的ptr指針指向?qū)ο蟮牡讓訉?shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)由對(duì)象的encoding屬性決定。
編碼類型:
/* ?* 對(duì)象編碼 ?* ?* 像 String 和 Hash 這樣的對(duì)象,可以有多種內(nèi)部表示。 ?* 對(duì)象的 encoding 屬性可以設(shè)置為以下域的任意一種。 ?*/ #define REDIS_ENCODING_RAW 0 ? ? /* Raw representation 簡(jiǎn)單動(dòng)態(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編碼的簡(jiǎn)單動(dòng)態(tài)字符串*/
可以通過(guò)object encoding命令查看數(shù)據(jù)庫(kù)鍵的值對(duì)象的編碼
通過(guò)encoding屬性來(lái)設(shè)定對(duì)象所使用的編碼,而不是為特定類型的對(duì)象關(guān)聯(lián)一種固定的編碼,極大提升了redis的靈活性和效率,根據(jù)不同的使用場(chǎng)景來(lái)為對(duì)象設(shè)置不同的編碼
不同數(shù)據(jù)結(jié)構(gòu)的編碼方式:

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

