vlambda博客
学习文章列表

【云技术】Redis学习笔记

记录Redis的一些功能与特征,以点的方式记录,以便后续唤醒面的记忆。


数据类型

string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、GEO(地理数据)、HyperLogLog。



redis模块

redis module的版本独立于redis,以编译成动态加载库.so文件的方式发布。

常用的module有RedisSearch、BloomFilter、Redis-ML等。





数据持久化

支持RDB和AOF两种持久化方案。

RDB方案支持定时/定量持久化数据,优化点服务效率高,缺点是不实时可能丢失数据的。

AOF方案,支持always/everysec/no三种选项,优点是实时可以做到不丢数据,缺点是服务效率低。


分布式锁

使用setnx指令和expire指令可以实现分布式锁的功能,使用mutil指令同时提交两条指令可以做到事务操作。




发布与订阅

发布订阅功能有点类似消息队列,但是redis的消息订阅功能的使用场景非常有限,并且数据量也不能太大,不支持堆积与回溯。



事务

redis支持事务操作,但更像一次提交批量操作,回退操作比较复杂,谨慎使用。


key过期清除策略

同时使用惰性过期与定时过期策略,与同时使用事件触发与定时触发类似,优点是在效率与资源中做了平衡。


内存淘汰策略

redis在内存不足时采用的处理策略有noeviction、allkeys-lru、allkeys-random、volatile-lru、volatile-random、volatile-ttl等。


缓存穿透

集中访问一个热点key时,这个key在缓存中在存储层中都不存在,每次都直接访问存储层。
常用的解决方案有布隆过滤器和存储空对象。
布隆过滤器跟单哈希函数BitMap不同之处在于它使用了k个哈希函数,每个字符串跟k个bit对应。从而降低了冲突的概率。


缓存击穿

集中访问一个热点key时,这个key在缓存中失效的瞬间,大量穿透缓存直接访问存储层。

常用的解决方案有加互斥锁或信号量。




缓存雪崩

缓存出现错误不能工作时,所有请求都直接访问存储层。

常用的解决方案有高可用缓存、请求限流、数据预热等。


部署架构@单机

优点:搭建维护简单。

缺点:单点故障无法使用、单机资源受限。



部署架构@主从复制

优点:读写分离,读取能力强大,主机负责写从机分担读。

缺点:写入能力受限,只有一台主机,出故障时可能会引起数据不一致。



部署架构@哨兵模式

优点:哨兵在主从的基础之上,提升了系统的可用性。

缺点:单机写,写入能力受限;从节点不提供服务,资源浪费。


部署架构@集群

哈希插槽数据分片读写。

优点:服务高可用。

缺点:搭建成本高。