[Redis][数据类型]详细讲解

1.Redis 特殊数据结构

1.Streams

  • 应用场景:主要用为队列(阻塞队列)

2.Geospatial

  • 应用场景:用来存储坐标(经纬度)

3.HyperLogLog

  • 应用场景:估算集合中的元素个数
  • 注意
    • HyperLogLog不存储元素的内容,但是能够记录“元素的特征”,从而在新增元素的时候,能够知道当前新增的元素,是一个已经存在的元素还是一个崭新的元素
    • 也就是说,HyperLogLog只能用来计数,记录当前集合中有多少个不同的元素,但是不能告诉用户这些元素都是啥
    • HyperLogLog存储元素的时候,提取特征的过程是不可逆的
  • 优势举例Set可以统计服务器的UV,假设Set存储userId,每个8字节,存储1亿个UV,则需要大概800MB,但是HyperLogLog只需要最多使用12KB空间,就可以实现上述效果

4.bitmaps

  • 应用场景:使用bit位来表示整数,本质上还是一个集合,属于是Set类型对整数的特化版本

5.bitfields

  • 理解:就是C中说到的位段,这里称为位域

2.渐进式遍历

1.是什么?

  • Redis使⽤scan命令进⾏渐进式遍历键,进⽽解决直接使⽤keys获取键时可能出现的阻塞问题。

  • 每次scan命令的时间复杂度是 O ( 1 ) O(1) O(1),但是要完整地完成所有键的遍历,需要执⾏多次scan

    • ⾸次scan从0开始
    • scan返回的下次位置为0时,遍历结束
      请添加图片描述
  • 注意:这里的渐进式遍历,在遍历过程中,不会在服务器这边存储任何的状态信息,此处的遍历,随时都可以终止,不会对服务器产生任何的副作用

  • 渐进式遍历其实是一组命令,这一组命令的使用方法是一样的,其中的代表是SCAN


2.SCAN

  • 功能:以渐进式的方式进行键的遍历
  • 语法SCAN cursor [MATCH pattern] [Count count] [Type type]
    • count:只是一个给Redis服务器的"提示/建议",写入的count和实际返回的key的个数不一定是完全相同的,但是不会差很多
  • 返回值
    • 下一次scan的游标cursor -> 下次继续遍历,光标要从哪里开始
      • cursor不能理解成下标,不是一个连续递增的整数,仅仅就是一个"字符串"
    • 以及本次得到键
  • 时间复杂度 O ( 1 ) O(1) O(1)
  • 注意:渐进性遍历scan虽然解决了阻塞的问题,但如果在遍历期间键有所变化(增加、修改、删除),可能导致遍历时键的重复遍历或者遗漏,这点务必在实际开发中考虑
  • 说明:除了scan以外,Redis面向哈希类型、集合类型、有序集合类型分别提供了hscansscanzscan命令,用法和scan基本类似

3.数据库管理

  • Redis提供了⼏个⾯向Redis数据库的操作,分别是dbsizeselectflushdbflushall

1.切换数据库

  • 语法select dbIndex

  • 说明

    • 许多关系型数据库,例如MySQL⽀持在⼀个实例下有多个数据库存在的,但是**与关系型数据库⽤字符来区分不同数据库名不同,Redis只是⽤数字作为多个数据库的实现**
    • Redis默认配置中是有16个数据库。select 0操作会切换到第⼀个数据库,select 15会切换到最后⼀个数据库
    • 0号数据库和15号数据库保存的数据是完全不冲突的,即各种有各⾃的键值对。默认情况下,我们处于数据库0
      请添加图片描述
  • 注意:Redis中虽然⽀持多数据库,但随着版本的升级,其实不是特别建议使⽤多数据库特性

    • 如果真的需要完全隔离的两套键值对,更好的做法是维护多个Redis实例,⽽不是在⼀个 Redis实例中维护多数据库
      • 这是因为本⾝Redis并没有为多数据库提供太多的特性
      • 其次⽆论是否有多个数据库,Redis都是使⽤单线程模型,所以彼此之间还是需要排队等待命令的执⾏
      • 同时多数据库还会让开发、调试和运维⼯作变得复杂
    • 实践中,始终使⽤数据库0其实是⼀个很好的选择

2.清除数据库

  • flushdb / flushall 命令⽤于清除数据库,区别
    • flushdb:只清除当前数据库
    • flushall:会清除所有数据库
  • 永远不要在线上环境执⾏清除数据的操作,除非想”从删库到跑路“😛

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147406.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕设设计推荐-基于python+Djanog大数据的电影数据可视化分析

精彩专栏推荐订阅:在下方主页👇🏻👇🏻👇🏻👇🏻 💖🔥作者主页:计算机毕设木哥🔥 💖 文章目录 一、电影数据可视…

JavaWeb--纯小白笔记04:Tomcat整合IDEA

IDEA整合Tomcat 1.点击Idea的导航栏里的Run,选择Edit Configurations 2.点击左上角的"",向下翻找到Tomcat Server 选择里面的Local 3.创建一个web工程,点击IDEA的File-->new-->project 然后选择Java Enterprise,…

crosscrossover24支持的游戏有那些

CrossOver刚刚更新了24版本,支持《地平线零之曙光》、《以撒的结合:重生》等游戏。一起来看看它有哪些更新吧!之前买过23版的用户可以在1年之内免费升级哦,点击这里查看升级教程。 一、功能优化 - 更新 Wine 至最新的稳定版 Wine …

七彩云南文化旅游网站设计与实现

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装七彩云南文化旅游网站软件来发挥其高效地信息处理的作用&am…

[机器学习]04-逻辑回归(python)-03-API与癌症分类案例讲解

逻辑回归(Logistic Regression) 的一API 介绍 关于如何配置模型中的优化器、正则化和惩罚项。 1. 逻辑回归 API 在 Scikit-learn 中,逻辑回归可以通过如下方式定义: from sklearn.linear_model import LogisticRegression ​ …

Web 安全(Web Security)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

Renesas R7FA8D1BH (Cortex®-M85)的 General PWM的应用实践

目录 概述 1 General PWM介绍 1.1 特性 1.2 定时器选择注意点 2 时钟配置 3 应用案例 3.1 基本定时器应用 3.2 定时器回调函数案例 3.3 输入捕捉功能案例 3.4 更新周期案例 3.5 更新占空比案例 3.6 单次触发脉冲案例 4 测试 4.1 代码介绍 4.2 验证 概述 本文主…

算法练习题25——leetcode3279统计重新排列后包含另一个字符串的子字符串的数目(滑动窗口 双指针 哈希)

题目描述 解题思路 本题用到了滑动窗口 双指针 哈希 刚开始我是没读懂题的因为我笨 我想把我的思路说一下 左端不轻易缩小 只有找到跟word2匹配了 比如说abbcdd 遍历到c的时候才能匹配这个word2 对吧 那么之后加上以一个d或者俩d 都符合了 然后我们算完了 才能缩小左端 扩大…

python爬虫案例——异步加载网站数据抓取,post请求(6)

文章目录 前言1、任务目标2、抓取流程2.1 分析网页2.2 编写代码2.3 思路分析前言 本篇案例主要讲解异步加载网站如何分析网页接口,以及如何观察post请求URL的参数,网站数据并不难抓取,主要是将要抓取的数据接口分析清楚,才能根据需求编写想要的代码。 1、任务目标 目标网…

STM32篇:按键点亮LED灯

输入(按键):KEY1---PA0 KEY2---PA1 输出(LED灯):LED1---PB8 LED2---PB9

【M-LOAM学习】

M-LOAM(INITIALIZATION) Article Analysis Scan-Based Motion Estimation 通过在consecutive frame (each LiDAR)(因为omp parallel)中寻找correspondences然后通过最小化所有考虑feature之间residual error的transformation between frame to frame 针…

(done) 声音信号处理基础知识(7) (Understanding Time Domain Audio Features)

参考:https://www.youtube.com/watch?vSRrQ_v-OOSg&t1s 时域特征包括: 1.幅度包络 2.均方根能量 3.过零率 振幅包络的定义:一个 frame 里,所有采样点中最大的振幅值 一个形象的关于振幅包络的可视化解释如下:…

MateBook 16s 2023在Deepin下开启性能模式,调节风扇转速到最大,全网首发!

方法 在Deepin下按住Fnp快捷键,开启性能模式。 验证 首先去debian下载acpi-call-dkms https://packages.debian.org/sid/all/acpi-call-dkms/download 然后使用root用户执行: apt install --simulate ./acpi-call-dkms_1.2.2-2.1_all.deb apt inst…

C++入门——(类的默认成员函数)析构函数

文章目录 一、析构函数二、析构函数的特点总结 一、析构函数 析构函数与构造函数功能相反,析构函数不是完成对对象本⾝的销毁,⽐如局部对象是存在栈帧的,函数结束栈帧销毁,他就释放了,不需要我们管,C规定对…

【ChatGPT】提示词助力广告文案、PPT制作与书籍推荐的高效新模式

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯高效广告推销文案提示词使用方法 💯AI自动生成PPT全流程提示词使用方法 💯精选书籍推荐爆款文案提示词使用方法 💯小结 💯…

第一个NDK项目

新建项目 选择Native C的项目,我这里给项目的命名是NDKTest。 目录分析 新增了一个cpp目录,里面有一个CMakeLists和.cpp文件。 CMakeLists 文件是用来配置C编译过程的。 # Sets the minimum CMake version required for this project. cmake_minimum_…

【解密 Kotlin 扩展函数】命名参数和默认值(十三)

导读大纲 1.0.1 命名参数1.0.2 默认参数值 上一节讲述如何自定义 joinToString 函数来代替集合的默认字符串表示 文末遗留下几个待优化问题–传送门 1.0.1 命名参数 我们要解决的第一个问题涉及函数调用的可读性 例如,请看下面的joinToString调用: joinToString(collection,&…

循环中用sleep

echo <pre>;for ($i0;$i<10000000;$i){var_dump($i);} 没有用sleep,快速消耗cpu和内存 使用sleep后效果 echo <pre>;for ($i0;$i<10000000;$i){var_dump($i);usleep(1000);//php 暂停0.001秒} 总结&#xff1a;sleep能释放资源(cpu和内存)&#xff0c;但是运…

2025校招内推-招联金融

【投递方式】 直接扫下方二维码&#xff0c;或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus&#xff0c;使用内推码 igcefb 投递&#xff09; 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策…

LeetCode 面试经典150题 191.位1的个数

Java中的算术右移和逻辑右移的区别 题目&#xff1a;编写一个函数&#xff0c;获取一个正整数的二进制形式并返回其二进制表达式中设置位的个数&#xff08;也被称为汉明重量&#xff09;。 设置位的个数即二进制中1的个数。 思路&#xff1a;方法一&#xff1a;因为正数的原…