Redis是什么
Remote Dictonary Service,直译为远程字典服务,是一个构建与内存的高速的KV数据库
Redis能干什么
存储热点数据的缓存数据库
解决分布式资源冲突的分布式锁
解决异步消费的消息队列
Redis为什么那么快
1. 构建于内存,KV数据结构类似于hashmap,查询优势明显。
2. KV数据结构中的V有五种常用数据结构,这些数据结构简单,也优化了底层算法
3. 单进程单线程模型,避免了线程上下文切换开销及各种加锁释放锁带来的问题
4. 采用了I/O多路复用模型,多路指的是多个网络链接,复用指的是服用同一个线程,高效处理多个链接请求,尽量减少网络IO时间消耗。
5. 自己构建了底层VM机制,使用自己的通信协议
Redis的常用数据结构
Redis本身是一个KV数据结构,所以这里讲的数据结构指的是KV中V的数据结构
1. String:动态字符串,冗余预分配,1M以下,成倍扩容,1M以上,1M扩容,最大不超过512M,类比ArrayList
C:set mset
R:get mget
U:set
D:del
Other:expire,setnx,incr
2. List:类比LinkedList,常用于异步队列,常用操作rpush,lpop;rpush rpop
3. hash:类比HashMap,不同于hashmap的rehash,在这里使用的是渐进式rehash
C:hset,hmset
R:hget,hmget,hgetall
U:hset
D:hdel
Other:hincrby
4. set:类比Hashset,特殊的hashmap,value为null,常用操作,sadd,spop
5. zset:类比Sortedset+hashmap,常用于存粉丝列表,value为用户id,score为关注时间,底层实现为跳跃表
C:zadd
R:zrange,zrevrange,zcard,zscore,zrank,zrangebyscore
U:zadd
D:zrem