布隆过滤器使用

复习Java基础知识时看到布隆过滤器,本文记录布隆过滤器的使用场景及本地布隆过滤器,分布式布隆过滤器。布隆过滤器(Bloom Filter)是一个叫做 Bloom 的老哥于1970年提出的。我们可以把它看作由二进制向量(或者说位数组)和一系列随机映射函数(哈希函数)两部分组成的数据结构。相比于我们平时常用的的 List、Map 、Set 等数据结构,它占用空间更少并且效率更高,但是缺点是其返回的结果是概率性的,而不是非常准确的。理论情况下添加到集合中的元素越多,误报的可能性就越大。并且,存放在布隆过滤器的数据不容易删除。

阅读更多

使用Redis作为Mybatis二级缓存

本文主要记录redis作为mybatis二级缓存时所遇到的问题,因为mybatis以及缓存基于sqlsession,会话完成后,缓存数据就会被清空,二级缓存基于mapper,虽然解决了sqlsession的问题,但是还是基于本地内存,应用被杀掉后,缓存还是被清空,并且分布式环境下会出现缓存一致性问题。所以现在大部分二级缓存都是使用redis实现,有效解决分布式情况下缓存问题。当然,redis分布式缓存也会存在一定的问题。后面有时间再记录。

阅读更多

Docker搭建Redis哨兵

Redis的运行方式有四种,包括单机版,主从复制,哨兵模式,集群,单机肯定是不行的,一旦挂了连个备胎都没有,主从复制模式当redis主节点故障不能自动切换为备用节点,需要运维手动切换。哨兵模式使用选举策略对master节点进行监控,当master节点挂掉后,自动从slave节点中投票选举一个新的master节点出来。可以实现自动故障切换,读写分离,数据备份。集群模式主要针对数据量比较大,需要分片存储的场景。

阅读更多