redis存储数据的基本类型有:string
(字符串类型)、hash
(散列类型)、list
(列表类型)、set
(集合类型)、zset
(有序集合类型)。
redis中的每个对象都由一个redisObject结构来表示:
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
属性决定。
编码类型:
#define REDIS_ENCODING_RAW 0
#define REDIS_ENCODING_INT 1
#define REDIS_ENCODING_HT 2
#define REDIS_ENCODING_ZIPMAP 3
#define REDIS_ENCODING_LINKEDLIST 4
#define REDIS_ENCODING_ZIPLIST 5
#define REDIS_ENCODING_INTSET 6
#define REDIS_ENCODING_SKIPLIST 7
#define REDIS_ENCODING_EMBSTR 8
可以通过object encoding
命令查看数据库键的值对象的编码
通过encoding
属性来设定对象所使用的编码,而不是为特定类型的对象关联一种固定的编码,极大提升了redis的灵活性和效率,根据不同的使用场景来为对象设置不同的编码
不同数据结构的编码方式:
到此这篇关于Java中redis的基本类型的文章就介绍到这了,更多相关redis类型内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!