软件测试

Redis个人学习总结

2020-04-01  本文已影响0人  Fox_Nick

Redis学习

   Redis(缓存、分布式锁、支持高并发、限流、过滤、集群)

1.      redis是单线程结构、支持高并发;

(1)      优点:基于内存操作,多路IO复用(IO:可高校处理多链接请求,支持高并发,减少网络IO的消耗时间)

(2)     缺点:无法发挥多核CPU性能(解决:通过在单机开多个redis实例完善)

2.      Redis五种数据结构;

(1)      String

(2)      List

(3)      Hash

(4)     Set(集合)

(5)      Zset(有序集合)

注释:字符串最大长度512MB,(list、hash、set、zset属于容器型数据结构),采用预分配冗余空间方式来减少内存频繁分配

3.      布隆过滤器;

(1)      高并发去重、节省空间

(2)      注意:initial_size 设置过大,浪费空间。设置过小,影响准确率

4.      持久化(主节点不进行持久化,从节点备份)

(1)      快照(全量备份;通过开启子程序进行,遍历整个内存,大块写入磁盘,加重系统负载;缺点:耗资源)

(2)      AOF日志(连续增量备份,只记录对内存进行修改的指令记录;fsync耗时的IO操作,降低redis性能,增加系统IO负担)

(3)      混合持久化(4.0特性)

5.      限流

(1)      漏斗限流(Redis_Cell模块,漏斗算法

6.      GeoHash(地理位置,附近)

7.      内存回收机制(默认策略:noeviction策略;maxmemory-policy volatile-lru)

(1)      volatile-lru -> 根据LRU算法删除设置了超时属性(expire)的键,直到腾出足够空间为止。如果没有可删除的键对象,回退到noeviction策略。

(2)     allkeys-lru -> 根据LRU算法删除键,不管数据有没有设置超时属性,直到腾出足够空间为止。

(3)      volatile-lfu -> 根据LFU算法删除设置了超时属性(expire)的键,直到腾出足够空间为止。如果没有可删除的键对象,回退到noeviction策略。

(4)      allkeys-lfu -> 根据LFU算法删除键,不管数据有没有设置超时属性,直到腾出足够空间为止。

(5)      volatile-random -> 随机删除过期键,直到腾出足够空间为止。

(6)      allkeys-random -> 随机删除所有键,直到腾出足够空间为止。

(7)      volatile-ttl -> 根据键值对象的ttl属性,删除最近将要过期数据。如果没有,回退到noeviction策略。

(8)      noeviction -> 不会删除任何数据,拒绝所有写入操作并返回客户端错误信息,此时Redis只响应读操作。

8.      集群

(1)      主从机制(主从同步、从从同步)

(2)      Sentinel哨兵模式(实现自动故障切换。提供稳定的服务)

上一篇下一篇

猜你喜欢

热点阅读