全栈编程基础知识8
全栈编程基础知识8
1.Redis
1.介绍:基于C语言。开发的一款nosql数据库,基于内存的,读写快,支持多种数据类型。存的是键值对。
2.类型:string list hash set bitmap,sorted set等。支持事务,lua脚本,支持发布订阅模型。支持集群。
3.Redis为什么快?
- 基于内存
- 高效的IO模型:单线程事件循环+IO多路复用
- 高效的内部编码方式
- 简洁的通信协议
4.其他的缓存?
Memcached 被redis取代了。
5.Redis和Memcached对比?
同:基于内存,过期策略,性能高
不同:redis数据类型丰富,redis支持持久化。redis支持集群,redis是单线程模型,redis支持发布订阅和Lua脚本
6.为什么用redis?
快:内存
高并发:qps高
功能全:分布式锁,限流,消息队列,延时队列
7.redis分布式锁?
例如:一张票,100个人抢怎么办?
保障资源正确访问需要互斥,用到锁也就是悲观锁。假设最坏的情况,共享的资源只能被一个线程使用其他的线程被阻塞,用完再把资源转给其他的线程。
8.分布式ID
方案1:UUID,通用唯一标识符
缺点:
- 做主键不合适,存储资源多
- 无序影响性能
方案2:雪花算法
