认识 redis

24 阅读2分钟

什么是 redis ?

redis 是一种基于内存的数据库,对数据的读写操作都是在内存中完成的,因此速度非常快,常用作缓存,消息队列,分布式锁等场景。

redis 提供了多种数据类型来支持不同的业务场景,string, list, hash, set, zset, bitmaps, hyperloglog, GEO, stream,并且对数据类型的操作都是原子性的,因为命令执行是单线程的,不会存在并发竞争问题

除此之外,redis 还支持事务,持久化,lua 脚本,多种集群方案(主从复制,哨兵模式,切片集群模式),发布订阅模式,内存淘汰机制,过期删除机制

redis 和 memcached 有什么区别 ?

共同点:
  1. 都是基于内存的数据库,一般都是用来做缓存使用的
  2. 都有过期策略
  3. 两者性能都非常高
区别:
  1. reids 支持的数据类型更丰富,而 memcached 只支持最简单的 key - value 数据类型
  2. redis 支持持久化,可以将内存中的数据保存的磁盘,重启的时候可以再次加载使用,memcached 不行
  3. redis 原生支持集群模式,memcached 没有需要依靠数据库来往集群中分片写入数据
  4. redis 支持发布订阅模型,lua 脚本,事务等功能,而 memcached 不支持

为什么用 redis 作为 MySQL 的缓存

  1. redis 具备 高性能 和 高并发 两种特性,假如用户第一次访问 MySQL,这个过程因为访问硬盘所以比较慢,将该用户访问的数据缓存到 redis 中,这样下一次访问这个数据的时候就可以直接从缓存中读取,操作 redis 就是操作内存,所以速度非常快
  2. redis 具备高并发,单台设备的 redis 的 QPS 就是 MySQL 的 10 倍,所以直接访问 redis 能够承受的请求数是远远大于直接访问 MySQL 的,所以我们可以考虑把数据库中的部分数据转到缓存中去。