我所知道的Redis

还记得上家公司做操盘应用,因数据操作频繁,所以当时用了redis来做数据的缓存 。还有个做缓存的叫memcached,这个之前学php的时候用过,不过实际项目中并没有用到,相比redis的优势有:

  1. Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  2. Redis支持数据的备份,即master-slave模式的数据备份。
  3. Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

Redis 5中集中数据类型:

字符串类型(string),散列类型(hash),列表类型(list),集合类型(set),有序集合类型(zset)

结构类型 存储的值 读写能力
String 字符串、整数、浮点数 对整个字符串或其中一部分执行操作;对整数和浮点数执行自增或自减操作
List 链表 从链表两端进行push、pull操作
Set 包含字符串的无序收集器,不重复 添加、获取、删除单个元素;检查元素是否存在于集合中;计算交集、并集、差集
Hash 包含键值对的无序列表 添加、获取、删除单个元素;获取所有键值对元素
Zset 字符串成员与浮点数分数之间的有序映射 添加、获取、删除单个元素;根据分值范围或成员来获取元素

Redis存储策略:

首先来了解一下redis缓存雪崩,因为数据未加载到缓存中,或者缓存同一时间大面积失效,从而导致所有请求去查数据库,导致数据库CPU和内存负载过高,甚至宕机。
存储策略分为Snapshot和AOF两种,这两种机制都是讲数据存储在内容中:

Snapshot:将数据先存储在内存中,当数据量累计达到设定的阀值时,会触发一次DUMP操作,将变化的数据一次性写入数据文件
AOF:将数据先存在内存中,存储的时候会调用fsync来完成本次操作的日志记录,AOF最关键的配置就是关于调用fsync追加日志文件的平率,有两种预设频率,always每次记录进来都添加,everysecond 每秒添加一次

当数据量大的时候,会用一下策略:

唯一标识作为key,存全部信息
其它查询信息作为key,只存唯一标识
监控变化,expire设置过起时间

Redis容灾策略:

  1. 采用主从方式(mater-slave)
  2. 为了读写性能,master不做任何持久化
  3. slave开启Snapshot和AOF来进行持久化,保证数据安全性
  4. master挂掉后,修改slav为master
  5. 恢复master后,将原先的master修改为slave,启动slave
  6. master和slave都挂掉了,调用命令通过AOF和Snapshot进行恢复

你可能感兴趣的:(我所知道的Redis)