数据结构-Redis(一)

news2024/10/6 1:39:54

Redis除了性能强外,还有数据结构丰富多彩。

一、String

  1. 单值缓存

SET  key value

GET  key

  1. 存对象

相信大家都存过,我们一般都是把对象value转json,获取的时候,再json转对象

SET user:1 value(json值)

但当我们需要对对象某个值进行修改,这种就不如下面的方式简单

MSET user:1:name zhangsan user:1age 18

MGET user:1name user:1age

  1. 分布式锁

SETNX product:10001 true   //返回1代表成功

SETNX product:10001 true   //返回0代表失败

...执行业务

DEL product:10001        //执行完释放

但这种如果没DEL回发生死锁,这时候需要设置超时时间

SET product:10001 true ex 10 nx

 

  1. incr 命令

当我们需要文章点击量时候,我们可以执行这个,执行一次代表一次点击量,

取货直接用get

分布式系统全局系列号

当前命令也可以在分布式数据库的情况下,来作为id使用,但每次获取都用这个执行一次非常耗费性能,所以可以一次性批量生成。

INCRBY  orderId 1000

用法是在每个服务器取一次,一次取1000个号,在单机内存中使用,使用完再取一次,减少与redis交互。

缺点就是这种不适合连续的id,也会存在系统宕机的时候,浪费id情况。

另外也可以用雪花算法。

Spring Session底层也是用redis实现,我前面写的一篇文章,redis实现单点登入也是可以的。

Redis一定要避免bigKey,因为是单线程,如果一个key取值太久,去他操作都是在阻塞状态。

二、哈希

  1. 哈希结构

我们直接用电商购物车实例来使用redis哈希结构

 

当我们在购物车放入明朝那些事,放入软件设计两本书

当我们加购一本明朝那些事,用hincrby

这时候用hlen可以找到购物车一共两本书

可以用hgetall 找到购物车所有值

用hdel删除指定书

这样好处就是可以代替数据库来做这些操作,最后在提交的时候持久化到数据库,提高使用效率,提升用户体验感。(数据库做复杂,并且性能低)

那么哈希相对于String优缺点呢?

优点:

  1. 数据整合存储,方便管理。
  2. 相比String操作消耗内存cpu更小。
  3. 相比String更节省空间。

缺点:

redis集群下不适合大规模使用哈希。

(因为redis集群分片存储,当hash值过大,会存在资源倾斜放在其中一个redis节点上。)

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

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

相关文章

推荐一款可匹敌国际大厂的国产企业级低无代码平台

文章目录 前言:亟待转型的软开创业者什么是低/无代码居高不下的企业级软件搭建成本1. 开发周期较长2. 在需求明确、软件修改、系统集成等方面存在多种卡点3. 数据管理混乱 无代码/低代码开发,时代的潮流无代码平台 smardaten1. smardaten 简介2. smardat…

ATK-MD0096-V21使用手册

ATK-0.96’ OLED_V2.0(V2.0 是版本号,下面均以 OLED 表示该产品)是 ALIENTEK 推出的一款高性能 OLED 显示模块,,尺寸小巧(27mm26mm),结构紧凑,模块通过一个28P的排针与外部连接。 8080并口模式…

「Win」Windows环境变量介绍与操作

✨博客主页:何曾参静谧的博客 📌文章专栏:「Win」Windows程序设计 相关术语 Windows环境变量:是一组用于存储系统和应用程序配置信息的变量,在Windows操作系统中起着非常重要的作用。本文将详细介绍Windows环境变量的概…

机器学习常识 22: 循环神经网络

摘要: 循环神经网络 (Recurrent Neural Network, RNN) 用于处理序列数据. 本贴以前的算法, 我都用 Java 代码实现过. 很遗憾, 从本贴开始, 就只知道一点概念了. 1. 动机 序列数据中, 前后数据之间不是独立的, 而是会产生上下文影响. 如: 文本, 机器翻译一个句子的时候, 不是…

寻访 | 北京量子信息研究院

前言:为了普及科学技术知识、传播科学思想,光子盒特开启「寻访」专栏,带领各位读者探访全球的量子工厂和实验室。 2023年5月30日下午,为期6天的“2023中关村论坛主会期”落下帷幕。 量子计算、区块链、脑机接口、新能源材料——围…

最优化简明版(下)

最优化方法 牛顿法和拟牛顿法都是求解无约束最优化问题的常用方法,具有收敛速度快的优点。牛顿法是迭代算法,每一步需要求解目标函数的海森矩阵的逆矩阵,计算比较复杂,而且有时候海森矩阵不一定存在逆阵。拟牛顿法通过正定矩阵近…

【软件测试】测试经验:「测试用例」设计、审查、管理

目录 一、测试用例的设计 (1)测试用例 ① 测试用例的概念 ② 测试用例的功能 ③ 良好测试用例的特征 ④ 测试用例设计的概念 (2)测试用例设计考虑因素 ① 测试用例设计的主要影响因素 ② 测试用例设计的基本思想 &…

C#,码海拾贝(36)——求“实对称矩阵““特征值与特征向量“的“雅可比过关法“之C#源代码

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 矩阵类 /// 作者&#xff1a;周长发 /// 改进&#xff1a;深度混淆 /// https://blog.csdn.net/beijinghorn /// </summary> public partial class Matrix {…

【SpringBoot+MyBatis】项目的Invalid bound statement (not found)错误

一、注意&#xff1a;我的mapper.xml在静态资源resources文件夹下 二、报错原因&#xff1a; 1、没有在 MyBatis 配置文件中正确配置 Mapper.xml 文件的位置或者配置了错误的位置 (本人出现的问题) 解决方案&#xff1a;在application.yml中添加 mapper-locations。 mybatis:…

MongoDB 基本介绍和操作

目录 1、mongodb 简介 2、mongodb 概念解析 3、mongodb 连接 4、mongodb 数据库操作 5、mongodb 文档操作 6、mongodb 条件操作符 7、mongodb Limit与Skip 方法 8、mongodb 排序 9、mongodb 索引 10、mongodb 聚合 11、mongodb 复制&#xff08;副本集&#xff09; …

chatgpt赋能python:Python字符串非空——为何重要?

Python字符串非空——为何重要&#xff1f; 在Python编程中&#xff0c;我们经常要处理字符串。而有时候我们需要判断一个字符串是否为空&#xff0c;这个需要在处理输入、文件读写等场景下进行。本文将介绍如何在Python中判断字符串是否为空&#xff0c;并探讨字符串非空的重…

java并发编程:CAS与原子操作

文章目录 乐观锁与悲观锁CASUnsafe类AtomicInteger类CAS实现原子操作的三大问题ABA问题循环时间长开销大只能保证一个共享变量的原子操作 乐观锁与悲观锁 锁可以从不同的角度分类。其中&#xff0c;乐观锁和悲观锁是一种分类方式。 悲观锁就是我们常说的锁。对于悲观锁来说&a…

全网最详细的商业智能BI知识讲解

有一点可能很多人没有想到&#xff0c;实际上商业智能BI的相关概念已经有了数十年的发展历史。在这段发展过程中&#xff0c;商业智能BI形成了一套成熟的理论和产品体系&#xff0c;并且在现代的信息化、数字化加成下&#xff0c;成为了各行各业企业的成熟产品。 一、商业智能…

剑指offer打卡

这里写目录标题 day1 二叉树和为某一路径day2复杂链表的复刻day3二叉搜索树与双向链表day4数字排列day5找出出现次数超过一半的次数day6 二进制中1的个数day7 二叉树的最近公共祖先day8 字符串转换为整数day9 构建乘积数组day10不用加减乘除的加法day11求12....nday11 股票的最…

7.1「实战」图书录入和修改API --如何优雅处理校验逻辑?

文章目录 前言一、service层BookServiceImpl.saveBook()BookBO 二、web层BookAdminControllerBookVO 最后 前言 在做了这么多架构铺垫之后&#xff0c;一位订阅同学非常期待我能更新主线API&#xff0c;我觉得他的想法非常合理&#xff0c;所以今天就来安排~~~ 我主要考虑的是…

数据库期末复习(10)数据库规范化理论

函数依赖(概念):FD 范式分解(评估准则): 模式分解(工具): 函数依赖 如何衡量一个数据库好不好:准确 高效如果一个数据库设计的不好的话的&#xff0c;会带来哪些问题 删除异常 数据冗余为什么会导致出现上方的问题:数据依赖数据依赖的分类:完全依赖&#xff0c;部分依赖&am…

OpenCV实战(26)——视频序列处理

OpenCV实战&#xff08;26&#xff09;——视频序列处理 0. 前言1. 读取视频序列2. 处理视频帧2.1 视频处理2.2 自定义视频处理类 VideoProcessor2.3 处理一系列图像2.4 使用帧处理器类 3. 存储视频序列3.1 存储视频文件3.2 修改 VideoProcessor 类3.3 编解码器四字符编码 4. 完…

第九章:子查询

第九章&#xff1a;子查询 9.1&#xff1a;子查询的基本使用 子查询的基本语法结构 SELECT .... FROM .... WHERE expr operator (SELECT ...FROM ...WHERE ...);子查询(内查询)在主查询之前一次执行完成。子查询的结果被主查询(外查询)使用。注意事项 子查询要包含在括号内。…

【JavaSE】Java(五十五):核心要点总结

文章目录 1. 为什么不允许静态方法访问非静态变量2. Java的内存模型3. 在Java中什么时候用重载什么时候用重写4. 举例说明什么情况下更倾向于用抽象类而不是接口5. 实例化对象有哪几种方式 1. 为什么不允许静态方法访问非静态变量 在Java中&#xff0c;静态方法属于类级别的方法…

【HTML】第 4 节 - 列表标签

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、列表 3、无序列表 4、有序列表 5、定义列表 6、总结 1、缘起 微信小程序的列表标签是一种用于展示多个数据项的…