Redis复习笔记

2023-11-09

Redis 是一个高性能的key-value数据库。

支持多种数据类型:

  1.  String:可以是字符串、整数、浮点数
  2.  List(列表):一个链表,链表上的每个节点都包含一个字符串
  3.  Set(集合):包含字符串的无序收集器,并且被包含的每个字符串都是独一无二的,各不相同
  4.  Hash(散列):包含键值对的无序散列表。
  5.  ZSet(有序集合):字符串成员与浮点数分值之间的有序映射,元素的排列顺序有分值大小决定

特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis 优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

 

Redis使用与内存优化

 

  • 建议不要开启VM(虚拟内存)选项

VM 选项是作为 Redis 存储超出物理内存数据的一种数据在内存与磁盘换入换出的一个持久化策略,将严重地拖垮系统的运行速度,所以要关闭 VM 功能,请检查你的 redis.conf 文件中 vm-enabled 为 no。

  • 设置最大内存选项

最好设置下 redis.conf 中的 maxmemory 选项,该选项是告诉 Redis 当使用了多少物理内存后就开始拒绝后续的写入请求,该参数能很好的保护好你的 Redis 不会因为使用了过多的物理内存而导致 swap,最终严重影响性能甚至崩溃。

  • 设置内存饱和回收策略

应用场景

1.String

这个没啥好说的,最常规的 set/get 操作,Value 可以是 String 也可以是数字。一般做一些复杂的计数功能的缓存。缓存序列化后的文件,图片等。

2.Hash

这里 Value 存放的是结构化的对象,比较方便的就是操作其中的某个字段。

做单点登录的时候,可以用这种数据结构存储用户信息,以 CookieId 作为 Key,设置 30 分钟为缓存过期时间,能很好的模拟出类似 Session 的效果。

3.List

使用 List 的数据结构,可以做简单的消息队列的功能。另外还有一个就是,可以利用 lrange 命令,做基于 Redis 的分页功能,性能极佳,用户体验好。

4.Set

因为 Set 堆放的是一堆不重复值的集合。所以可以做全局去重的功能。为什么不用 JVM 自带的 Set 进行去重?

因为我们的系统一般都是集群部署,使用 JVM 自带的 Set,比较麻烦,难道为了一个做一个全局去重,再起一个公共服务,太麻烦了。

另外,就是利用交集、并集、差集等操作,可以计算共同喜好,全部的喜好,自己独有的喜好等功能。

5.Sorted Set

Sorted Set多了一个权重参数 Score,集合中的元素能够按 Score 进行排列。

可以做排行榜应用,取 TOP N 操作。Sorted Set 可以用来做延时任务。最后一个应用就是可以做范围查找。

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

Redis复习笔记 的相关文章

随机推荐

  • python—判断语句练习题05

    目录 1 题目 解2 2线性方程 使用克莱姆法则解下面的线性方程 2 题目 石头剪刀布小游戏 程序随机产生一个数字0 1和2来表示石头 剪刀 和布 程序提示用户输入数字0 1或2 然后显示一条信息表示用户或计算机的输赢情况 3 题目 编写册
  • MySQL生成千万测试数据

    目录 1 创建基础表结构 2 创建内存表 3 创建存储过程和函数 4 执行存储过程 5 遇到的问题 5 1 1449错误 5 2 1114错误 6 同步数据 1 创建基础表结构 CREATE TABLE t user id int 11 N
  • 自带浏览器_苹果手机自带浏览器下载的文件在哪里

    随着iOS13的发布 苹果在Safari浏览器中新增了 下载项 类似于Mac上的功能 可以帮助追踪当前正在下载的任何文件 并可以导航到下载的存储位置 苹果手机自带浏览器下载的文件在哪里 默认情况下 Safari浏览器的下载管理器将会把下载内
  • Ajax数据传递暨利用js进行表单数据回显

    问题一 Ajax传递整个表单数据 function createCustomer post pageContext request contextPath list add do new customer form serialize fu
  • PyQt5-布局

    布局 在qt里布局分四大类 QBoxLayout QGridLayout QFormLayout QStackedLayout QBoxLayout 直译为 盒子布局 一般使用它的两个子类QHBoxLayout 和 QVBoxLayout
  • AIX程序打包

    打包 首先需要安装打包工具mkinstallp 在AIX安装光盘中 安装bos adt insttools 安装过程中需要在放入光盘1 安装完成后 可以在 usr sbin 下找到mkinstallp AIX中一个package包含有多个f
  • 终于有人把 Docker 讲清楚了,别再说不会 Docker 了!(摘)

    富 Web 时代 应用变得越来越强大 与此同时也越来越复杂 集群部署 隔离环境 灰度发布以及动态扩容缺一不可 而容器化则成为中间的必要桥梁 本文我们就来探索一下 Docker 的神秘世界 从零到一掌握 Docker 的基本原理与实践操作 别
  • APT攻击是什么?面对APT攻击,我们应该怎么做?

    目录 一 概念 二 APT攻击特征 三 APT攻击技术 3 1 APT攻击方式 3 2 APT攻击诱饵种类 四 APT攻击模式 4 1 第一阶段 扫描探测 4 2 第二阶段 工具投送 4 3 第三阶段 漏洞利用 4 4 第四阶段 木马植入
  • 区块链学习笔记13——ETH以太坊概述

    区块链学习笔记13 ETH以太坊概述 学习视频 北京大学肖臻老师 区块链技术与应用 笔记参考 北京大学肖臻老师 区块链技术与应用 公开课系列笔记 目录导航页 比特币和以太坊是两种最主要的加密货币 比特币被称为区块链1 0 以太坊被称为区块链
  • 自动驾驶开发入门(三)---浅谈Apollo Cyber RT中的Transport

    Cyber的Transport为上层封装了底层数据传输的细节 上层主要使用Transport Transmitter Receiver三个类 其中Transport是工厂类 负责创建Transmitter Receiver以及Dispatc
  • pyspark作为生产者发送消息(推送数据)到kafka

    pyspark作为生产者发送消息到kafka 网上大部分的案例都是pyspark作为消费者消费kafka的消息 但是作为生产者生产消息发送给kafka的很少 下面把pyspark如何创建数据 或读取数据 作为生产者发送消息给kafka作为案
  • C++字节对齐

    系统让程序中的变量按字节对齐的目的 访问高效 字节是内存空间分配的最小单位 在程序中 我们定义的变量可以放在任何位置 但实际情况是访问特定类型变量的时候在特定的内存地址访问 这就需要各种类型数据按照一定的规则在空间排列 而不是顺序的一个接着
  • 两台文件服务器,负载均衡,用两台云服务器搭建一个负载均衡

    用两台云服务器搭建一个负载均衡 内容精选 换一换 弹性负载均衡 Elastic Load Balance 以下简称ELB 通过将访问流量自动分发到多台弹性云服务器 扩展应用系统对外的服务能力 实现更高水平的应用程序容错性能 用户通过基于浏览
  • 顺序表的C语言实现(静态/动态)

    目录 1 顺序表的定义 2 顺序表的实现 静态分配 3 顺序表的实现 动态分配 1 顺序表的定义 线性表的顺序存储又称顺序表 它是用一组地址连续的存储单元依次存储线性表中的数据元素 使得逻辑上相邻的两个元素在物理位置上也相邻 因此 顺序表的
  • C++基础知识 - 浮点类型

    需要精确计算的数学 工程应用 用整数类型不合适 float类型 单精度浮点类型 用来存储带小数部分的数据 在内存中占用4个字节 表示范围 3 4 1038 3 4 1038 不需记忆 精度 最长7位有效数字 是指7位10进制位 精度只能取值
  • 【Android】常用对话框大全(二)Material Dialog

    前言 上一篇文章中 谈到本系列的文章将讲解Android dialog Material dialog 为何要谈论Material呢 开发过Flutter的开发者也许就会明白 Material Design框架Flutter也在用 而在其官
  • MATLAB---获取图像中的指定像素点的值(RGB图像)

    输入 clear all RGB imread 图片名 格式 r x1 y1 z1 指定像素点的横坐标 c x2 y2 z2 指定像素点的纵坐标 p impixel RGB r c 用impixel 函数来返回RGB图像的横纵坐标对应的像素
  • Java 使用枚举消除if else

    1 功能需求 if else判断时写代码过程中非常常见的 但是有些相对比较固定格式的if else判断却是我们可以尽可能避免的 其中 枚举的作用在我们消除if else代码快的作用非常大 那么 我们该如何实现呢 2 代码实现 定义枚举变量
  • 【54-Sentinel熔断、降级、限流的基本概念-Sentinel实战上手应用-actuator实时监控-Docker安装部署Sentinel教程-熔断降级实战练习-Sentinel自定义资源】

    一 知识回顾 0 三高商城系统的专题专栏都帮你整理好了 请点击这里 1 系统架构演进过程 2 微服务系统架构需求 3 高性能 高并发 高可用的三高商城系统项目介绍 4 Linux云服务器上安装Docker 5 Docker安装部署MySQL
  • Redis复习笔记

    Redis 是一个高性能的key value数据库 支持多种数据类型 String 可以是字符串 整数 浮点数 List 列表 一个链表 链表上的每个节点都包含一个字符串 Set 集合 包含字符串的无序收集器 并且被包含的每个字符串都是独一