Java中redis的基本类型

网友投稿 336 2022-08-19


Java中redis的基本类型

redis存储数据的基本类型有:string(字符串类型)、hash(散列类型)、list(列表类型)、set(集合类型)、zset(有序集合类型)。

redis中的每个对象都由一个redisObject结构来表示:

/*

* Redis 对象

*/

typedef struct redisObject {

// 类型

unsigned type:4;

// 不使用(对齐位)

unsigned notused:2;

// 编码方式

unsigned encoding:4;

// LRU 时间(相对于 server.lruclock)

unsigned lru:22;

// 引用计数

int refcount;

// 指向对象的值

void *ptr;

} robj;

和保存数据有关的三个属性是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指针指向对象的底层实现数据结构,这些数据结构由对象的encoding属性决定。

编码类型:

/*

* 对象编码

*

* 像 String 和 Hash 这样的对象,可以有多种内部表示。

* 对象的 encoding 属性可以设置为以下域的任意一种。

*/

#define REDIS_ENCODING_RAW 0 /* Raw representation 简单动态字符串*/

#define REDIS_ENCODING_INT 1 /* Encoded as integer long类型的整数*/

#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 整数集合*/

#define REDIS_ENCODING_SKIPLIST 7 /* Encoded as skiplist 跳跃表和字典*/

#define REDIS_ENCODING_EMBSTR 8 /* Embedded sds string encoding embstr编码的简单动态字符串*/

可以通过object encoding命令查看数据库键的值对象的编码

通过encoding属性来设定对象所使用的编码,而不是为特定类型的对象关联一种固定的编码,极大提升了redis的灵活性和效率,根据不同的使用场景来为对象设置不同的编码

不同数据结构的编码方式:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java数据结构超详细分析二叉搜索树
下一篇:剑指Offer之Java算法习题精讲字符串与二叉搜索树
相关文章

 发表评论

暂时没有评论,来抢沙发吧~