【大数据】Centos环境下安装redis+hyperloglog

72 阅读2分钟

image.png

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情

前言

项目中除了用到kakfa,Redis作为高速key-value库,也是十分必要的,对于数据处理或者中,可以使用redis作为暂存、或者数据去重流程中的必要组成部分。

redis的特点

redis有着其自身的特点:

  • 支持数据的持久化,可以将数据持久化存储于硬盘,等系统重启的时候进行加载
  • 支持多种数据格式,包括key-value、set、hash等
  • 支持数据备份

redis的优势

  • 高速,吞吐单节点情况下 读速度 110000次/秒 写81000次/秒
  • 数据存放于内存中
  • 功能丰富 HyperLogLog、发布订阅模式、事务、key过期等

redis的应用场景

  • 类似于kafka 做程序解耦
  • 前端所需的一些基本固定的数据
  • 各种计数器,如点赞、评论量等
  • 等等

为何高并发

redis是存内存数据库,而使用基本是读写操作,因此所有的时间耗费都是IO操作,而内存IO操作又极快,因此成就了Redis的高并发,同时Redis是单线程操作,这就意味着没有线程间的资源竞争,避免了阻塞死锁等情况。

部署

redis的下载

进入到官网下载:

https://redis.io/download/

下拉至这里点击

image.png

或者服务器中

wget https://download.redis.io/releases/redis-6.2.7.tar.gz

redis的安装部署

下载后解压并进入文件夹

tar -zxvf redis-6.2.7.tar.gz
cd redis-6.2.7

安装

make
make PREFIX=/usr/local/redis install

启动

cd /usr/local/redis/bin
./redis-server

image.png

image.png

redis的使用

redis-cli
127.0.0.1:6379>

image.png

hyperloglog

image.png


简介

HyperLogLog 是一种基数估算算法。简单来说就是一个数据集合中,不能重复的元素个数。类似于java程序中的Map或者Set,当元素存在于字典或者集合中时,保持整体计数不变,而不同元素加入的时候,数据入集合,计数响应的增加,但是随之而来的问题就是当数据量庞大的时候,查询的时间复杂的和存储的空间复杂度是一个问题。HyperLogLog利用伯努利过程近似估计数据流的基数,使用准确率换空间复杂度,保证准确率在一个能够接收的范围。

使用

Redis 提供了 PFADD 、 PFCOUNT 和 PFMERGE 三个命令来供用户使用 HyperLogLog

  • PFADD

    添加指定元素到 HyperLogLog 中。

    PFADD key element [element ...]
    
  • PFCOUNT 返回给定 HyperLogLog 的基数估算值。

    PFCOUNT key [key ...]
    
  • PFMERGE 将多个 HyperLogLog 合并为一个 HyperLogLog

    PFMERGE destkey sourcekey [sourcekey ...]
    

PFADD

image.png

可见区分大小写

PFCOUNT

image.png

PFMERGE

image.png

之后会学习redis的发布订阅模式 蟹蟹~