zoukankan      html  css  js  c++  java
  • Redis:基础

    Redis数据类型

    KV形式存储,KEY是String,最大容量512M,V有以下几种类型:

    • String:命令set,get;字符串,底层数据结构就是SDS
    • Hash:命令hset,hget;entry数量少的时候用ziplist(节省空间,实际上不是链表,放在连续的空间里,性能比哈希差一点,取头尾元素是常数时间),高的时候用hashtable。哈希表
    • List:命令lpush,lpop;底层用quicklist,双向链表,节点上是ziplist;有序集合,可以从左边加也可以从右边加
    • Set:命令:sadd,spop;无序集合;假如全是整数,用intset,非正数用hashtable,当整数超过512个时也会用hashtable(存key)
    • ZSet:命令:zadd,zrem;有序集合,基于score排序;元素个数低于128个且元素值小于64字节用ziplist存储;跳表+字典;跳表:利用level,给某些节点(随机生成)定义多层链表,越高层数量越小,从上往下查找,提高查询效率。

    这些类型底层都是一个redisObject

    SDS

    redis用c语言实现的simple dynamice string,可实现动态字符串,还存储了len长度,低于44个字节的时候是embstr(内存空间连续),大于44会变成raw(分配2次内存空间),对embstr的字符进行修改也会直接变成raw。

    Redis适用场景

    • 缓存
    • 分布式Session
    • 分布式锁
    • incr全局id
    • incr计数器
    • incr限流
    • 位操作
  • 相关阅读:
    MySql中引擎
    Session和Cookie的区别和联系
    Global Round 2
    CF550 DIV3
    Java的反射机制
    IO多路复用
    简单DP内容
    Java 对象的创建以及类加载
    Java 一些常见问题(持续更新)
    红黑树的一些知识点
  • 原文地址:https://www.cnblogs.com/fcb-it/p/13305612.html
Copyright © 2011-2022 走看看