Redis

Redis是一款内存型数据库,以其快速、持久化及高可用性著称。其内部数据以redis Object存储,包括String、Hash、List、Set和Zset五大数据类型。Redis采用定期过期策略结合惰性检查处理过期键,同时支持LRU和LFU两种淘汰策略。持久化机制包括RDB快照和AOF日志,确保数据安全。
摘要由CSDN通过智能技术生成

Redis(Remote dictionary service 远程字典服务)

特性

  • 快  -- 内存型数据库 key-value
  • 持久化  -- 过期、淘汰策略
  • 高可用 集群 
  • 单线程命令执行
  • IO多路复用

Redis内部数据的存储结构-redis Object

1、结构体定义:

typedef struct redisObject {
    unsigned type;
    unsigned encoding;
    unsigned lru;
    int refcount;
    void *ptr;
} robj;

2、字段说明

        type: 数据类型

        encoding: 内部编码

        lru: 如果是LRU 设置的是全局的lru_clock的值 即是最近访问时间

              如果是LFU,低8位设置的是使用次数(频率),高16位设置的是访问时间

        refcount: 引用数,如果为0说明现在这个value没人引用,可以回收


Redis五大数据类型

1、String

    内部编码(转换不可逆)

  1.  int -- 8字节长整型 redis.conf文件中可配
  2. raw -- 44字节以上
  3. embstr -- 44字节以下 只读

2、hash(可以存储对象类型数据)

key和value中间有一个field(小key)但是field不能设置过期时间   

 内部编码

  1.  ziplist
    1. 类似于双向链表,不同的是ziplist指向的是指针并不是具体的数据。典型的时间换空间
    2. 所以只能用在数据比较小的地方
    3. 64字节 数量<512
  2. hashtable
    1. 数组+链表的结构
    2. 可以扩容 有两个数组ht[0]和ht[1]
      1. 先为ht[1]分配空间 = ht[0].used*2
      2. ht[1]=ht[0]
      3. ht[0]删除
      4. ht[1]改为ht[0],创建新的ht[1]

3、list(有序可以重复)

 内部编码

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值