当前位置: 首页 > news >正文

六、Redis 高级功能详解:BitMap、HyperLogLog、Geo、Stream

Redis 高级功能详解:BitMap、HyperLogLog、Geo、Stream

Redis 不仅提供了基础的数据结构(String、List、Set、Hash、Sorted Set),还提供了一些高级数据结构,专门用于特定的应用场景,如位运算统计、去重计数、地理位置存储、流数据处理等。本文将详细介绍这些高级功能的使用方式、应用场景以及优化策略。


1. BitMap:位存储操作

1.1 BitMap 概述

BitMap 本质上是一个以位(bit)为单位进行操作的特殊字符串,适用于存储布尔状态(如用户签到、活跃状态等)。每个 bit 仅占用 1 bit(而不是 1 字节),因此非常节省内存。

1.2 BitMap 相关命令

(1)设置 bit 状态:SETBIT

设置某个偏移量(offset)上的 bit 值(0 或 1)。

SETBIT user:sign:20240301 0 1  # 设置第 0 位为 1
SETBIT user:sign:20240301 1 1  # 设置第 1 位为 1
SETBIT user:sign:20240301 2 0  # 设置第 2 位为 0

这可以用于记录用户是否在 2024-03-01 这天签到。

(2)获取 bit 状态:GETBIT

查询某个位上的值。

GETBIT user:sign:20240301 

相关文章:

六、Redis 高级功能详解:BitMap、HyperLogLog、Geo、Stream

Redis 高级功能详解:BitMap、HyperLogLog、Geo、Stream Redis 不仅提供了基础的数据结构(String、List、Set、Hash、Sorted Set),还提供了一些高级数据结构,专门用于特定的应用场景,如位运算统计、去重计数、地理位置存储、流数据处理等。本文将详细介绍这些高级功能的使…...

WSL下使用git克隆失败解决

WSL默认nat模式,别动了防火墙放行,见图1git导入[bash1],ip为你wsl上linxu通过ifconfig获取的本机ip,端口对好某alcsh软件开启tun模式【经过测试,不开也行】应该成了,如果不行,修改.wslconfig为下…...

【Elasticsearch】索引生命周期管理相关的操作(Index Lifecycle Actions)

Elasticsearch 的Index Lifecycle Management(ILM)是一种用于管理索引生命周期的工具,它允许用户根据索引的使用阶段(如热、温、冷、冻结)自动执行一系列操作。以下是详细解释 Elasticsearch 中的索引生命周期操作(Index Lifecycl…...

TS的接口 泛型 自定义类型 在接口中定义一个非必须的属性

TS的接口 泛型 自定义类型 接口 新建一个ts文件&#xff0c;在里面定义一个接口 export interface PersonInter{id:string,name:string,age:number }在vue文件中引入这个ts文件 <script lang"ts" setup name"Person">import {type PersonInter} …...

Collab-Overcooked:专注于多智能体协作的语言模型基准测试平台

2025-02-27&#xff0c;由北京邮电大学和理想汽车公司联合创建。该平台基于《Overcooked-AI》游戏环境&#xff0c;设计了更具挑战性和实用性的交互任务&#xff0c;目的通过自然语言沟通促进多智能体协作。 一、研究背景 近年来&#xff0c;基于大型语言模型的智能体系统在复…...

未来经济范式争夺战:AR眼镜为何成为下一代交互终端的制高点?

未来经济范式争夺战&#xff1a;AR眼镜为何成为下一代交互终端的制高点&#xff1f; 在蒸汽机轰鸣的工业革命时代&#xff0c;煤炭、铁路、电报构建了第一个现代经济范式&#xff1b;互联网时代&#xff0c;电力、光纤、物流网络重构了全球经济版图。当前&#xff0c;我们正站…...

Mybatis实现批量添加

1.设计一张商品表 CREATE TABLE IF NOT EXISTS goods (id BIGINT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL );2.编写实体类映射数据库表格 Data public class Goods {private Long id;private String name;// Getters and Setters }3.编写持久层接口以及其对应…...

golang 内存对齐和填充规则

内存对齐和填充规则 对齐要求&#xff1a;每个数据类型的起始地址必须是其大小的倍数。 int8&#xff08;1字节&#xff09;&#xff1a;不需要对齐。int16&#xff08;2字节&#xff09;&#xff1a;起始地址必须是2的倍数。int32&#xff08;4字节&#xff09;&#xff1a;起…...

【YashanDB认证】yashandb23.3.1 个人版单机部署安装实践

YCA报名链接如下: YashanDB|崖山数据库系统YashanDB学习中心-YCA认证详情 目前免费 主要参考文档&#xff1a; 单机&#xff08;主备&#xff09;部署 | YashanDB Doc 另外还参考摩天轮文章&#xff1a; YashanDB 23.2.9.101 企业版安装步骤抢先看&#xff01; - 墨天轮 …...

安全渗透测试的全面解析与实践

引言 随着网络安全威胁的日益增加&#xff0c;企业和组织对自身系统的安全性提出了更高的要求。安全渗透测试&#xff08;Penetration Testing&#xff0c;简称渗透测试&#xff09;作为主动发现和修复系统安全漏洞的重要手段&#xff0c;已成为安全防护体系中的关键环节。本文…...

通俗易懂的分类算法之决策树详解

通俗易懂的分类算法之决策树详解 1. 什么是决策树&#xff1f; 决策树是一种像树一样的结构&#xff0c;用来帮助我们对数据进行分类或预测。它的每个节点代表一个问题或判断条件&#xff0c;每个分支代表一个可能的答案&#xff0c;最后的叶子节点就是最终的分类结果。 举个…...

【OpenCV C++】以时间命名存图,自动检查存储目录,若不存在自动创建, 按下空格、回车、Q、S自动存图

文章目录 // 保存图像的函数 void saveImage(const cv::Mat& frame) {// 生成唯一文件名auto now = std::chrono::system_clock::...

post get 给后端传参数

post 方式一 &#xff1a; data: params 作为请求体&#xff08;Request Body&#xff09;传递&#xff1a; 你已经展示了这种方式&#xff0c;通过data字段直接传递一个对象或数组。这种方式通常用于传递复杂的数据结构。dowmfrom: function (params) { return request({ u…...

数据仓库的特点

数据仓库的主要特点可以概括为&#xff1a;面向主题、集成性、非易失性、时变性、高性能和可扩展性、支持复杂查询和分析、分层架构以及数据质量管理。 1. 面向主题&#xff08;Subject-Oriented&#xff09; 数据仓库是面向主题的&#xff0c;而不是面向事务的。这意味着数据…...

任务9:交换机基础及配置

CSDN 原创主页&#xff1a;不羁https://blog.csdn.net/2303_76492156?typeblog 一、交换机基础 交换机的概念&#xff1a;交换机是一种网络设备&#xff0c;用于连接多台计算机或网络设备&#xff0c;实现数据包在局域网内的快速交换。交换机基于MAC地址来转发数据包&#x…...

ArcGIS操作:07 绘制矢量shp面

1、点击目录 2、右侧显示目录 3、选择要存储的文件夹&#xff0c;新建shp 4、定义名称、要素类型、坐标系 5、点击开始编辑 6、点击创建要素 7、右侧选择图层、创建面 8、开始绘制&#xff0c;双击任意位置结束绘制...

【AI深度学习基础】NumPy完全指南终极篇:核心功能与工程实践(含完整代码)

NumPy系列文章 入门篇进阶篇终极篇 一、引言 在完成NumPy入门篇的基础认知与进阶篇的特性探索后&#xff0c;我们终于迎来这场终极技术深潜。本文不再停留于API使用层面&#xff0c;而是直指NumPy的架构内核与高性能工程实践的本质矛盾。作为Python科学计算领域的基石&#…...

Golang语法特性总结

1.认识Golang代码特性 package main //1.包含main函数的文件就是一个main包--当前程序的包名// import "fmt" // import "time" import("fmt""time" )//3.同时包含多个包 4.强制代码风格:函数的 { 一定和函数名在同一行&#xff0c;否…...

Java并发编程利器CyclicBarrier:从使用到源码深度解析,掌握多线程同步的艺术

引言 在多线程编程中,你是否遇到过这样的需求? 多线程分阶段处理数据,每个阶段完成后等待其他线程 并行计算任务需要多次同步汇总结果 模拟高并发场景下多个线程同时触发操作 CyclicBarrier(循环屏障)正是解决这类问题的神器!与CountDownLatch不同,它支持重复使用和自定…...

1.从0搭建前端Vue项目工程

我们通过vue官方提供的脚手架Vue-cli来快速生成一个Vue的项目模板。 **注意&#xff1a;**需要先安装NodeJS&#xff0c;然后才能安装Vue-cli。 环境准备好了&#xff0c;接下来我们需要通过Vue-cli创建一个vue项目&#xff0c;然后再学习一下vue项目的目录结构。Vue-cli提供了…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

JS红宝书笔记 - 3.3 变量

要定义变量&#xff0c;可以使用var操作符&#xff0c;后跟变量名 ES实现变量初始化&#xff0c;因此可以同时定义变量并设置它的值 使用var操作符定义的变量会成为包含它的函数的局部变量。 在函数内定义变量时省略var操作符&#xff0c;可以创建一个全局变量 如果需要定义…...