Redis-数据结构与对象-对象

9 篇文章 0 订阅
7 篇文章 1 订阅

1. 作用

Redis使用对象作为五种不同类型的底层实现,字符串,列表,哈希,集合,有序集合等

而对象是基于之前的分析的数据结构创建的。每个对象都至少用到一种数据结构,这意味着,Redis五大类型,底层实现是可以有多种实现的,这方便在不同场景下选择合适的底层结构,优化性能

在Redis中,键和值均为一个对象

 

2. 数据结构

typedef struct redisObject{

    //类型

    unsigned type:4;

    //编码

    unsigned encoding:4;

    //指向底层实现数据结构的指针

    void *ptr;

    // 引用计数器

    int refcount;

    //最后访问时间

    unsigned lru:32;

}

 

2.1. 类型

类型常量

对象名称

REDIS_STRING字符串对象
REDIS_LIST列表对象
REDIS_HASH哈希对象
REDIS_SET集合对象
REDIS_ZSET有序集合对象

2.2. 编码和底层实现

编码常量

编码所对应的底层数据结构

REDIS_ENCODING_INTlong类型的整数
REDIS_ENCODING_EMBSTRembstr编码的简单动态字符串
REDIS_ENCODING_RAW简单动态字符串
REDIS_ENCODING_HT字典
REDIS_ENCODING_LINKEDLIST双端链表
REDIS_ENCODING_ZIPLIST压缩列表
REDIS_ENCODING_INTSET整数集合
REDIS_ENCODING_SKIPLIST跳跃表和字典

可以从上图看出,Redis五大基本类型底层实现都不止一种

使用encoding属性设定对象所使用的编码方式,而不是特点类型关联一种编码,这样提升了Redis灵活性,特定场景可以选择合适的底层实现

 

 

如果您觉得这篇文章对您有用,欢迎各位关注我的公众号【Java程序喵】

  • 31
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Redis 是一个开源的内存数据存储系统,提供了丰富的数据结构和功能,被广泛用于缓存、消息队列、实时统计等场景。为了与 Redis 进行交互,可以使用各种编程语言提供的 Redis 客户端库。 Redis 客户端库允许开发者通过编程语言来与 Redis 服务器进行通信,并执行各种操作,例如设置和获取键值对、执行批量操作、发布和订阅消息等。 不同的编程语言提供了不同的 Redis 客户端库,以下是一些常用的编程语言与对应的 Redis 客户端库: - Python: `redis-py` (https://github.com/andymccurdy/redis-py) - Java: Jedis (https://github.com/xetorthio/jedis) - Node.js: `ioredis` (https://github.com/luin/ioredis) - Ruby: `redis-rb` (https://github.com/redis/redis-rb) - Go: `go-redis` (https://github.com/go-redis/redis) 使用这些客户端库,您可以连接到 Redis 服务器,并执行各种操作。例如,在 Python 中使用 `redis-py` 客户端库连接到 Redis 服务器并设置一个键值对,可以执行以下代码: ```python import redis # 创建 Redis 客户端 r = redis.Redis(host='localhost', port=6379, db=0) # 设置键值对 r.set('key', 'value') # 获取键值对 value = r.get('key') print(value) ``` 上述代码创建了一个 Redis 客户端对象 `r`,连接到本地的 Redis 服务器(默认端口为 6379),并设置了一个键值对 `key: value`。然后,通过 `get` 方法获取键 `key` 的值,并打印出来。 根据您使用的编程语言和相应的 Redis 客户端库,您可以以类似的方式与 Redis 进行交互。请参考相应的文档和示例代码以了解更多细节和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值