持续创作,加速成长!这是我参与「掘金日新计划 · 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/
下拉至这里点击
或者服务器中
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
redis的使用
redis-cli
127.0.0.1:6379>
hyperloglog
简介
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
可见区分大小写
PFCOUNT
PFMERGE
之后会学习redis的发布订阅模式 蟹蟹~