一、定义 布隆过滤器(Bloom Filter)是一种概率型数据结构,用于判断一个元素是否在一个集合中。它由 Burton Howard Bloom 在 1970 年提出。布隆过滤器的特点是空间效率高和查询速度快,但是有一定的误判率,并且一旦添加元素后无法删除。 二、布隆过滤器的工作原理 2.1 初始化 创建一个位数组(bit array),长度为 m,所有位都初始化为 0 2.2 插入元素 对于每一个要加入集合的元素,使用 k 个不同的哈希函数对该元素进行哈希,得到 k 个不同的索引位置。将这些位置上的位设置为 1 2.3 查询元素 当查询一个元素是否存在于集合中时,同样用上述 k 个哈希函数对元素进行哈希,检查所得的 k 个位置上的值是否全都是 1。如果全是 1,则认为该元素可能存在于集合中;如果有一个位置是 0,则可以确定该元素不存在于集合中 三、特点 优点 : 空间效率高:相比于其它数据结构如哈希表或二叉树,布隆过滤器占用的空间更小。 查询速度快:由于只需要计算几个哈希函数,所以查询速度非常快。 可以节省大量的存储资源,尤其是在处理大数据量的情况下。 缺点 : 存在误报(F.... 有更新! 布隆过滤器 程序人生
一、简介 redis是一个基于网络的、高性能的key-value内存数据库 redis跟memcached类似,不过数据可以持久化,支持的数据类型丰富 redis有以下几个特点 高性能 低时延 丰富数据结构存取 支持持久化 二、应用场景 取最新N个数据的操作,例如博客网站获取最近的文章 排行榜取TOP N,上面得需求以时间为权重,这里取TOP N以条件为权重 设置精确过期时间得应用,如用户会话信息 计数器应用,比如记录用户访问网站次数 缓存,如缓存系统中经常访问的数据 发布/订阅功能 手机验证码,使用expire设置过期时间 二、业务流程 2.1 redis架构 无中心自组织的架构,节点之间使用Gossip协议来交换节点状态信息 各节点维护key->server得映射关系 Client节点可以向任意节点发起请求,节点不会转发请求,只是重定向client 如果client在第一次请求和重定向之间,cluster拓扑发生变化,则第二次重定向将被再次重定向,直到找到正确的server 如下图所示,在第一次请求时,如果请求的数据不在节点中,redis会要求客户端重定向到正确节点,如果在.... 有更新! 大数据基础--redis 程序人生
1、安装gcc yum install gcc-c++ -y 2、redis下载解压 wget http://download.redis.io/releases/redis-5.0.8.tar.gz tar xzf redis-5.0.8.tar.gz cd redis-5.0.8 3、编译 make 4、启动 进入src目录,运行redis-serve即可 有更新! centos安装redis 程序人生
1.后台运行设置 redis通过设置 daemonize yes来让redis作为一个守护进程运行 2.远程登陆 redis远程登陆需要做配置 3.关于bind bind属性配置了 Redis侦听来自服务器上所有可用网络接口的连接,例如我的电脑有两个网卡,两个ip,我再bind里配置了ip1,那么我再客户端链接redis的时候通过ip2去链接就链接不上,只能通过ip1去链接 4.关于protected-mode protected-mode默认为yes,需要配合bind一起使用,bind的值默认为127.0.0.1,开启这项配置的话,需要设置bind或密码 关闭配置的话,则不设置密码和bind都可以访问 有更新! redis后台运行,保护模式设置 程序人生
docker安装redis 拉取镜像 docker pull redis 运行容器 建立配置文件 mkdir -p /opt/mydata/redis/conf \ vi /opt/mydata/redis/conf/redis.conf 再redis.conf中填写配置信息 bind 0.0.0.0 appendonly yes requirepass redis123 运行容器 docker run -p 6379:6379 --name redis \ -v /opt/mydata/redis/data:/data \ -v /opt/mydata/redis/conf/redis.conf:/etc/redis/redis.conf \ -d redis redis-server /etc/redis/redis.conf 有更新! docker安装redis 程序人生