Redis之String字符串

2023-10-29

一.基础知识:

1.字符串在Redis中都是以二进制的形式存储;
2.Redis字符串是动态字符串SDS, 因此可以直接使用append命令添加新值;
APPEND key value:
如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。
3.SDS字符串结构:
在这里插入图片描述
SDS会预分配内存空间,预分配未使用的空间大小保存在free字段;,以此减少空间分配的次数;
len字段记录字符串长度,减小了查询字符串长度的复杂度;

二.Bitmap
bitmap通过对位进行0/1设置来表示数据或者状态;

1.优点:
以很小的内存空间存储很大的数据;
时间复杂度低,查询速度快;
方便扩容;
由于是通过二进制存储,所以计算速度很快;

2.缺点:
存储大小有上限(Redis限制在512m内);

3.常用操作:
bitcount key [start] [end]: 计算offset从start到end之间bit位被设置为1的数量;
setbit key [offset] [value]:设置offset位的值0/1;
getbit key [offset]:返回offset位的值;

4.应用:
统计某些用户行为,如在线天数;
过滤掉某些数据,如客服已经接待过的会话;

5.当bitmap的数据非常大时,那么可以考虑使用以下两种方法:
(1)将一个大的 bitmap 分散到不同的 key 中,作为小的 bitmap 来处理.使用 Lua 脚本可以很方便地完成这一工作.
(2)使用bitcount命令的start和end参数,每次只对所需的部分位进行计算,将位的累积工作放到客户端进行,并且对结果进行缓存.

6.Redis BloomFilter 布隆过滤器就是基于bitmap实现的;
布隆过滤器可以直接使用Redission客户端提供的实现;

三.Bitop

1.对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey上.

2.BITOP operation[AND(与)/OR(或)/XOR(异或)/NOT(非)] destkey key [key …]

3.当 BITOP 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作0.空的 key 也被看作是包含0的字符串序列.保存到destkey的字符串的长度,和输入 key 中最长的字符串长度相等.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis之String字符串 的相关文章

随机推荐

  • Maven构建与管理项目(三)

    Maven构建与管理项目 三 Maven与Eclipse整合 安装Maven插件 下载下来的maven插件如下图所示 插件存放的路径是 E MavenProject Maven2EclipsePlugin 进入到eclipse中的dropi
  • 使用langchain+chatGPT搭建自有知识库问答机器人

    前言 自去年年底OpenAI发布ChatGPT以来 大型语言模型在人工智能领域掀起了一股热潮 随后 各家公司纷纷推出自己的大型语言模型 如百度的文心一言 讯飞的星火大模型等 在这个过程中 文本转图片和文本转视频等相关领域也备受关注 然而 很
  • C++泛型编程——模板,容器实现

    泛型编程 模板技术 模板实例化 模板的使用 模板参数 模板特化 函数模板特化 类模板特化 容器适配器 分离编译模式 泛型编程 泛型编程是编写和类型无关的逻辑代码 是代码复用的另一种手段 模板是实现泛型编程的一种技术 以往要编写一个通用的函数
  • mysql常用语句总结(一)

    连接数据库 mysql uroot padmin 使用数据库 use 库名 查看数据库列表 show databases 创建数据库 create database 数据库名称 删除数据库 drop database 数据库名称 查看当前数
  • javaEE和javaweb的区别

    JavaEE JavaEE 概念 Java EE Java 平台企业版 Java Platform Enterprise Edition 之前称为Java 2 Platform Enterprise Edition J2EE 2018年3月
  • OSI七层参考模型与5G协议

    计算机网络参考模型与5G协议 目录 计算机网络参考模型与5G协议 分层思想 OSI七层参考模型 OSI模型vsTCP IP模型 TCP IP协议组成 数据通信4要素 ARP工作原理 ICMP 数据封装过程 解封装过程 客户端和服务器的关系
  • 关于warning: #1295-D: Deprecated declaration (某函数) - give arg type的解决

    问题 使用keil5编写STM32单片机程序时 在头文件中声明了一个无参数的函数 并且没有返回值 出现warning 解决 在声明函数的括号中添加void 警告消除
  • Python异步请求:深入理解异步编程模型

    Python异步请求 深入理解异步编程模型 引言 随着现代应用程序对性能和响应速度的要求越来越高 异步任务请求成为了Python开发中重要的技术之一 本文将深入探讨Python中的异步任务请求的原理和用法 并提供详细的代码示例 帮助读者更好
  • 多元函数的极值matlab,利用MATLAB求多元函数的极值(2)

    利用MATLAB求多元函数的极值分两种情况 1 无约束条件 2 有约束条件 2 有约束条件下求极小值的方法 假设多变量非线性函数的数学模型为 min f x c x lt 0 ceq x 0 A x lt b Aeq x lt x lt b
  • python学习2.1列表

    一 初试列表 与C中的数组类似 1 列表的定义和输出 约定俗成 用 引起列表 eg 输入 band the beatles oasis eagles print band 输出 the beatles oasis eagles 2 列表元素
  • 【unity发布webgl】遇到的问题和解决办法

    1 发布部署出来的链接放到手机上测试 ios 20秒读条然后闪退 vivo 9秒读条闪退 小米 15秒进入 然鹅 资料只有130kb的图片 2 报这个警告 修改Build文件夹里的UnityLoader js取消 移动端展示弹出提示框 点击
  • 转移指令及延迟槽最详细讲解(转载)

    文章转自于 可以配合视频一起看 gt 计算机组成 视频 转移指令由于其自身的特殊性 总是会给我们带来一些麻烦 那对于流水线处理器来说 更是如此 转移指令会带来更多不良的影响 那我们应该如何应对和解决呢 这一节我们就来探索这个问题 我们先来看
  • 《HTTP权威指南》摘要

    目录 前言 第一章 HTTP 概述 第二章 URL 与资源 第三章 HTTP 报文 报文流 状态码 100 199 信息提示 200 299 成功 300 399 重定向 400 499 客户端错误 500 599 服务器错误 首部 通用首
  • latex自动生成中文目录_1分钟自动生成300页Word的目录,无需任何插件、代码!一看就会...

    一些特别的Word文档 尤其是篇幅特别长的文档 我们需要为其生成一个目录 以便于之后的查看 但是很多人都不知道如何在Word中生成目录 其实在Word中生成目录 并不难 今天小编就给大家分享一个1分钟能自动生成300页Word的目录的方法吧
  • 提高D3js力导向图加载速度(转)

    过去一段时间曾两次使用了 D3 力导向图来描绘族群关系 http bl ocks org mbostock 1062288 第一次用的时候不求甚解 交差了事 当时点也不多 很顺利完成了任务 这一次确不同 每个图里要渲染的有成千上万个点 每次
  • P1586 四方定理

    Powered by NEFU AB IN Link 文章目录 P1586 四方定理 题意 思路 代码 P1586 四方定理 题意 四方定理是众所周知的 任意一个正整数n 可以分解为不超过四个整数的平方和 给定的正整数n 编程统计它能分解的
  • CentOS7下安装python-pip

    在使用Docker的时候 有一个工具叫做 docker compose 安装它的前提是要安装pip工具 1 首先检查linux有没有安装python pip包 直接执行 yum install python pip 2 没有python p
  • SR-IOV 网卡虚拟化技术

    目录 目录 目录 SR IOV 在 KVM 中启用 SR IOV 网卡 手动挂载 VF 到虚拟机 指令方式挂载 SR IOV 的数据包分发机制 SR IOV SR IOV Single Root I O Virtualization 单根
  • nodejs升级

    https github com Kenshin gnvm logo GNVM Node js 多版本管理器 Travis Version Gitter Slack Jianliao GNVM 是一个简单的 Windows 下 Node j
  • Redis之String字符串

    一 基础知识 1 字符串在Redis中都是以二进制的形式存储 2 Redis字符串是动态字符串SDS 因此可以直接使用append命令添加新值 APPEND key value 如果 key 已经存在并且是一个字符串 APPEND 命令将