-
redis数据结构 lq
- string:
- 常用命令:get、set、incr、decr、mget等
- 应用场景:限制访问次数(限流)、验证码过期时间、热点数据缓存、访问量点击量存储、分布式锁、延时、
- 实现方式:decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。
- Hash:
- 常用命令:hget、hset、hgetall等
- 应用场景:存储对象。
- 实现方式:Redis的Hash对应的Value内部实际就是一个HashMap,实际有两种不同的实现,如果成员较少时,Redis为了节省内存会采用类似一维数组方式存储,对应的value RedisObject的encoding为zipmap,当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。
- list:
- 常用命令:lpush,rpush,lpop,rpop,lrange,BLPOP(阻塞版)等。
- 应用场景:消息队列。分页。
- 实现方式:redis list的实现是一个双向链表,可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,redis内部的很多实现,包括发送缓冲队列等也都用的是这个数据结构。
- set:
- 常用命令:sadd,srem,spop,sdiff ,smembers,sunion 等。
- 应用场景:去重,求并集,交集,差集。
- 实现方式:set内部实现是一个value永远为null的HashMap,实际就是通过hash的方式快速排重的。
- 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
润新知