接触Redis了,今天总结一波。
-
Redis的基本数据类型:
-
String:
- 常⽤命令: set,get,decr,incr,mget 等。
-
String 数据结构是简单的 key-value 类型, value 其实不仅可以是 String ,也可以是数字。 常规 keyvalue 缓存应⽤; 常规计数:微博数,粉丝数等。
-
- 常⽤命令: set,get,decr,incr,mget 等。
-
Hash:
-
常⽤命令: hget,hset,hgetall 等。
-
hash 是⼀个 string 类型的 field 和 value 的映射表, hash 特别适合⽤于存储对象,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值。 ⽐如我们可以 hash 数据结构来存储⽤户信息,商品信息等等。⽐如下⾯我就⽤ hash 类型存放了我本⼈的⼀些信息:
-
-
-
List:
-
常⽤命令 : lpush,rpush,lpop,rpop,lrange 等
-
list 就是链表, Redis list 的应⽤场景⾮常多,也是 Redis 最重要的数据结构之⼀,⽐如微博的关注列表,粉丝列表,消息列表等功能都可以⽤ Redis 的 list 结构来实现。Redis list 的实现为⼀个双向链表,即可以⽀持反向查找和遍历,更⽅便操作
-
-
-
Set:
-
常⽤命令: sadd,spop,smembers,sunion 等
-
set 对外提供的功能与 list 类似是⼀个列表的功能,特殊之处在于 set 是可以⾃动排重的。当你需要存储⼀个列表数据,⼜不希望出现重复数据时, set 是⼀个很好的选择,并且 set 提供了判断某 个成员是否在⼀个set 集合内的重要接⼝,这个也是 list 所不能提供的。可以基于 set 轻易实现交集、 并集、差集的操作。
-
-
-
Sorted Set:
-
常⽤命令: zadd,zrange,zrem,zcard 等
-
和set 相⽐, sorted set 增加了⼀个权重参数 score ,使得集合中的元素能够按 score 进⾏有序排列。举例: 在直播系统中,实时排⾏信息包含直播间在线⽤户列表,各种礼物排⾏榜,弹幕消息(可以理解为按消息维度的消息排⾏榜)等信息,适合使⽤ Redis 中的 Sorted Set 结构进⾏存储。
-
-
-
- 为什么 Redis 单线程模型效率也能那么高?
- C语言实现,效率高
- 纯内存操作
- 基于非阻塞的IO复用模型机制
- 单线程的话就能避免多线程的频繁上下文切换问题
- 丰富的数据结构(全称采用hash结构,读取速度非常快,对数据存储进行了一些优化,比如亚
索表,跳表等)
-
Redis 为什么设计成单线程的?
-
多线程处理会涉及到锁,并且多线程处理会涉及到线程切 ··· 换而消耗 CPU 。采用单线程,避免了不 必要的上下文切换和竞争条件。其次 CPU 不是 Redis 的瓶颈, Redis 的瓶颈最有可能是机器内存或者网络带宽。
-