为什么要用Redis?
因为传统的关系型数据库比如MySQL已经不能适用于所有的场景了。在传统的关系型数据库里,数据存放在磁盘上,IO开销很大。在高并发的情景下,比如秒杀系统里的库存扣减、对访问流量高峰的应对等,很容易把数据库打崩,所以需要引入缓存中间件。目前比较主流的缓存中间件有Redis和Memcached,综合考虑他们的优缺点,最后选择了Redis。
(1)提高对热点数据的访问性能
(2)在高并发场景下,分担数据库压力。
Redis相比Memcached有什么优势呢?
Memcached不支持持久化,数据只能放在内存里。
Redis可以持久化,支持更多数据类型。
Redis原生支持集群。
Redis常见问题
- 缓存和数据库双写一致性问题
- 缓存雪崩、缓存穿透、缓存击穿问题
- 缓存的并发竞争问题
Redis有哪些数据结构?
最基本的数据结构有5种,包括字符串string、哈希hash、链表list、集合set、有序集合sorted set。
此外还有位图bitset、hyperLogLog、Geo、Pub/Sub、BloomFilter等。
这些数据结构各可以用来做什么?Redis可以用来做什么?
Redis是一个开源的内存中的数据结构存储系统,可以用来做数据库、缓存、消息中间件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fu9z9t3j-1578570129201)(quiver-image-url/4C6EFC9EEDA7EADB30C1F0C0BDF81C5D.jpg =646x372)]
(1)string:缓存功能,计数器,存储用户session
(2)Hash:存储结构化的对象,但是不能表达嵌套对象的对象
(3)List:下拉分页,消息队列
(4)set:去重,交集看共同好友,并集差集
(5)zset:排行榜,热搜榜,带权重的队列
(6)BitMap:位图,以bit位为基本的单位存储信息,记录boolean,省空间
(7)Hyperloglog:不精确的去重技术功能,如统计UV(网站访客量)
(8)Geospatial:保存地理位置,做距离计算。寻找附近的人