redis相关命令详解及其原理

        redis是远程字典服务,客户端与redis服务通过tcp通信,远程字典服务可以想象成redis服务提供了unordered_map<string, T>的容器,key是string,value是T,T类型有多种数据结构;redis服务访问是请求回应模型;

        redis是内存数据库,数据都在内存中,不可能出现数据不在内存中,而磁盘中有数据;

        redis是kv数据库,kv数据库描述了redis的操作方式和存储方式;kv是通过散列表来存储和访问的;

        redis是数据结构数据库,也就是kv中的v提供了丰富的数据结构,包括string,list,hash,zset,set;

怎么设计kv

        所有key都是string类型的,如果是单个功能一个key,我们通常取有意义的名字;如果是相同功能有多个key(set role:10001 100形式的kv),以:作为分割,构成树状图;

        value提供了丰富的数据结构,每一个value都可以指向不同的结构;比如string结构的二进制安全字符串;hash结构;有序双向循环链表结构;set无序集合结构,对顺序不关注,里面的值都是唯一的;有序集合zset结构,对顺序是关注的,里面的值是唯一的,根据member来确定唯一,根据score来确定有序;

hash结构操作

有序双向循环链表结构结构操作

 有序集合zset结构操作

bit运算

redis存储结构

        key是string字符串,字符串长度小于等于32,则对于sdshdr8;在二进制字符串的实现中,我们是以长度进行分割的,所有sdshdr8结构中有个len标记二进制字符串的长度,alloc是分配的长度频繁分配内存,flags说明字符串类型,比如长度是32,还是64;buf是柔性数组,初始不占用空间;

redis的抽象层次

        1)关注命令的参数含义;

        2)关注命令的返回具体值;

        3)redis没有创建数据结构的命令,是设置和添加的同时创建;

        4)redis有删除kv的命令,如果v中没有元素会自动删除kv;

        5)有阻塞连接的概念brpop;

        6)通过命令组合实现其他数据结构;

        7)通过组合数据结构实现功能;hash+list,hash+zset; 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值