• redis数据结构 lq


    1. string:
      • 常用命令:get、set、incr、decr、mget等
      • 应用场景:限制访问次数(限流)、验证码过期时间、热点数据缓存、访问量点击量存储、分布式锁、延时、
      • 实现方式:decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。
    2. Hash:
      • 常用命令:hget、hset、hgetall等
      • 应用场景:存储对象。
      • 实现方式:Redis的Hash对应的Value内部实际就是一个HashMap,实际有两种不同的实现,如果成员较少时,Redis为了节省内存会采用类似一维数组方式存储,对应的value RedisObject的encoding为zipmap,当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。
    3. list:
      • 常用命令:lpush,rpush,lpop,rpop,lrange,BLPOP(阻塞版)等。
      • 应用场景:消息队列。分页。
      • 实现方式:redis list的实现是一个双向链表,可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,redis内部的很多实现,包括发送缓冲队列等也都用的是这个数据结构。
    4. set:
      • 常用命令:sadd,srem,spop,sdiff ,smembers,sunion 等。
      • 应用场景:去重,求并集,交集,差集。
      • 实现方式:set内部实现是一个value永远为null的HashMap,实际就是通过hash的方式快速排重的。
    5. zset:
      • 常用命令:zadd,zrange,zrank,zscore,zrem,zcard等
      • 应用场景:排行榜,评论的排序(时间),权重数据的存储
      • 实现方式:Redis sorted set的内部使用HashMap和跳跃表(SkipList)来保证数据的存储和有序,HashMap里放的是成员到score的映射,而跳跃表里存放的是所有的成员,排序依据是HashMap里存的score,使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。
  • 相关阅读:
    JAVA中的多态
    JAVA中的策略模式strategy
    JAVA中的clone方法剖析
    JAVA虚拟机中的堆内存Heap与栈内存Stack
    JAVA垃圾回收分代处理思想
    JAVA 垃圾回收机制
    JAVA内存管理
    混迹于博客园很久了,今天终于有了自己的博客园:coding-of-love 嘿嘿
    小程序富文本wxParse转换不成功的解决办法,填坑
    elementui级联选择器 如何设置多选?
  • 原文地址:https://www.cnblogs.com/rbwbear/p/15566313.html
Copyright © 2020-2023  润新知