Redis基础入门

目录

目录

一、认识Redis

        Redis特征:

二、Redis数据结构介绍

三、Redis的命令

        1.Redis通用命令

        2.关于String类型的命令

        3.关于Hash类型的命令

        4.关于List类型的常用命令

        5.关于Set类型的常用命令

        6.关于SortSet类型的常用命令

四、Redis中的层级关系的key

五、Redis的使用场景


一、认识Redis

        Redis诞生于2009年,全称是Remote Dictonary Server,即远程词典服务器,是一个基于内存的键值型NoSQL数据库。

        Redis特征:

        ①.键值型,value支持多种不同数据结构,功能丰富。

        ②.单线程,每个命令具备原子性。

        ③.低延迟,速度快(基于内存、IO多路复用、良好的编码)

        ④.支持数据持久化。

        ⑤.支持主从集群、分片集群。

        ⑥.支持多语言客户端(Java、C++等)

        Redis是一个开源,内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。

        内存的特点:易失性,断电就没了;速度快,内存的io读取速度比硬盘快;成本昂贵,因此,通常内存空间不大。

二、Redis数据结构介绍

        Redis是一种键值型数据库,key一般是字符串类型,而value可以是多种类型,类型多样。

        其中前五种是基本类型,后三种是特殊类型。

        Redis为了方便我们学习,将操作不同数据类型的命令进行了分组,在官网(https://redis.io/commands)中可以查看到不同的命令:

三、Redis的命令

        1.Redis通用命令

        通用命令是部分数据类型都可以使用的指令,常见的有:

  •  KEYS: 查看所有的key,不建议在生成环境中使用,因为效率低。
  •  DEL: 删除一个指定的key。
  •  EXISTS: 判断key是否存在。
  •  EXPIRE: 给一个key设置有效期,有效期到了,key就会被自动删除。
  •  TTL: 查看一个key的剩余有效期。

        通过help [command]可以查看一个命令的具体用法,例如:

        2.关于String类型的命令

        String类型,也就是字符串类型,是Redis中最简单的存储类型。

        其value是字符串,不过根据字符串的格式不同,又可以分为3类:

        关于String的常用命令如下:

        3.关于Hash类型的命令

        Hash类型,也叫散列,其value是一个无序字典,类似于Java中的HashMap结构。

        String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便:

KEYVALUE
project:user:pojo{name:"Jack",age:21}
project:project:pojo{name:"手机",age:1}

        Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD:

       Hash结构常用命令:

        4.关于List类型的常用命令

        Redis中的List类型与Java中的LinkedList类似,可以看做是一个双向链表结构。既可以支持正向检索和也可以支持反向检索。
        特征也与LinkedList类似:
        ●有序
        ●元素可以重复
        ●插入和删除快
        ●查询速度一般
        常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表等。

        List类型的常用命令:

        5.关于Set类型的常用命令

        Redis的Set结构与Java中的HashSet类似,可以看做是一个value为nul的HashMap。因为也是一个hash表,因此具备与Hashset类似的特征:
        无序
        元素不可重复
        查找快
        支持交集、并集、差集等功能

        set类型常用命令:

        6.关于SortSet类型的常用命令

        Redis的Sortedset是一个可排序的set集合,与Java中的TreeSet有些类似,但底层数据结构却差别很大。SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加 hash表。Sortedset具备下列特性:
        可排序
        元素不重复
        查询速度快
        因为Sortedset的可排序特性,经常被用来实现排行榜这样的功能,

        SortSet常用命令:

四、Redis中的层级关系的key

        Redis没有类似MySQL中的Table的概念,我们该如何区分不同类型的key呢?
        例如,需要存储用户、商品信息到redis,有一个用户id是1,有一个商品id恰好也是1,在Redis的同一个库下,如何区分这种不同类型的key呢?

        接下来,我们看一下key的结构。

        Redis的key允许有多个单词形成层级结构,多个单词之间用' : '隔开,格式如下:

                项目名:业务名:类型: id 

        这个格式并非固定,也可以根据自己的需求来删除或添加词条。
        例如我们的项目名称叫project,有user和product两种不同类型的数据,我们可以这样定义key: 
        ◆ user相关的key: project:user:1
        ◆product相关的key: project:product:1

        如果Value是一个Java对象,例如一个User对象,则可以将对象序列化为JSON字符串后存储。

        设置完以后,相当于目录结构一样:

五、Redis的使用场景

        1,在大型的秒杀库存扣减,app首页流量高峰,很容易将传统的关系型数据库(mysql,oracle等)给压垮

        2,还有很多没必要持久化的数据,比如说短信验证码,点赞数等

        3,分布式锁

        4,分布式缓存(session共享)

        5、当系统有性能瓶颈的时候,比如说表里面有2000万条数据,并且这个表访问量还非常大。增加redis缓存就是一个非常适合的场景。(redis的引入是为了减轻数据库的压力,防止大批量的大数据量查询将mysql压垮)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【RabbitMQ】WorkQueue

📝个人主页:五敷有你 🔥系列专栏:MQ ⛺️稳中求进,晒太阳 Work Queues Work queues任务模型,简单来说就是让多个消费者绑定到一个队列,共同消费队列中的消息 当消息处理比较耗时的时候&…

【开课】云贝教育2024年3月9日-PostgreSQL中级工程师PGCE认证培训开课啦!

课程介绍 根据学员建议和市场需求,规划和设计了《PostgreSQL CE 认证课程》,本课程以内部原理、实践实战为主,理论与实践相结合。课程包含PG 简介、安装使用、服务管理、体系结构等基础知识。同时结合一线实战案例, 面向 PG 数据库的日常维护管理、服务和…

力扣114. 二叉树展开为链表

Problem: 114. 二叉树展开为链表 文章目录 题目描述思路复杂度Code 题目描述 思路 思路1:借助额外空间 借助一个队列将二叉树先序遍历的节点存入,再取出连接成一个链表 思路2:后序遍历处理 后序遍历,先将左子树拉伸为一个链表&am…

支小蜜校园防欺凌系统如何有效应对学生霸凌?

学生霸凌不仅直接伤害到被霸凌者的身心健康,也对整个校园的和谐氛围构成了威胁。为了应对这一问题,校园防欺凌系统应运而生,成为维护校园安全、保护学生权益的重要工具。那么当校园防欺凌系统面对学生霸凌时,该如何有效应对呢&…

3. springboot中集成部署vue3

1. vue3构建 构建命令 npm run build&#xff0c; 构建的结果在disc目录&#xff1a; 2. springboot集成 2.1 拷贝vue3构建结果到springboot resources/static目录 2.2 springboot pom依赖 添加thymeleaf依赖 <dependency><groupId>org.springframework.boot</…

onnx模型优化利器onnxoptimizer、onnxsim

ONNX性能优化和调试技巧 - 知乎ONNX模型是一种跨平台、跨框架的模型表示格式,允许用户在不同的深度学习框架之间共享模型和数据,从而加速模型开发和部署。然而,在实际应用中,我们通常需要对ONNX模型进行性能优化和调试,以确保其在不同硬件和…https://zhuanlan.zhihu.com/…

golang中go build 后读取配置文件

golang打包后读取配置文件 在用go写代码的时候&#xff0c;为了好用经常使用go build 打包&#xff0c;如果我们用到了配置文件&#xff0c;就总是导致不能找到文件所在位置了出现bug&#xff0c;所以以下代码就解决了这个问题。 核心代码&#xff1a; file, err : exec.Look…

蓝桥杯刷题(一)

一、 import os import sys def dps(s):dp [0] * len(s)dp[0] ord(s[0]) - 96if len(s) 1:return dp[-1]dp[1] max(ord(s[0]) - 96, ord(s[1]) - 96)for i in range(2, len(s)):dp[i] max(dp[i - 1], dp[i - 2] (ord(s[i])) - 96)return dp[-1] s input() print(dps(s))…

Java定时调度

在Java应用程序中&#xff0c;定时调度是一项重要的任务。它允许你安排代码执行的时间&#xff0c;以便在将来的某个时刻自动执行任务。Java提供了多种方式来实现定时调度&#xff0c;其中最常用的是Java的Timer和ScheduledExecutorService。 在本教程中&#xff0c;我们将学习…

高效实用|ChatGPT指令/提示词/prompt/AI指令大全,进阶版

大家好&#xff0c;我是淘小白~ 《高效实用|ChatGPT指令/提示词/prompt/AI指令大全&#xff0c;基础版》整理完了&#xff0c;下面来看下进阶版的吧&#xff01; 如果对你有用记得点赞、关注、收藏哦~ 划走可能找不着了哦~~ 进阶版指令可用于复杂任务和场景&#xff0c;以及…

千帆AppBuilder使用指南-组件中心

应用中心 百度智能云千帆AppBuilder&#xff08;以下简称为AppBuilder&#xff09;应用中心&#xff0c;提供了大量可以立即体验的应用示例&#xff0c;开发者可以在这里搜索感兴趣的应用进行使用。 官方应用&#xff1a;AppBuilder官方提供的应用&#xff0c;可以立即体验应用…

前端运算符比较与计算中的类型转换,运算规则

题目&#xff1a; 下面表达式的值分别都是什么&#xff08;类型转换&#xff09; 0 0 0 2 true 2 false false false false 0 false undefined false null null undefined\t\r\n 0JS中的原始类型有哪些 原始值类型就是 存储的都是值&#xff0c;没有函数可以调用的。…

文件另存为保存:无法在未启用宏的工作簿中保存以下功能,

Wb.DoNotPromptForConvert true; Wb.Application.DisplayAlerts false;

产品展示型wordpress外贸网站模板

孕婴产品wordpress外贸网站模板 吸奶器、待产包、孕妇枕头、护理垫、纸尿裤、孕妇装、孕婴产品wordpress外贸网站模板。 https://www.jianzhanpress.com/?p4112 床品毛巾wordpress独立站模板 床单、被套、毛巾、抱枕、靠垫、围巾、布艺、枕头、乳胶枕、四件套、浴巾wordpre…

【Memory协议栈】NVRAM Manager 模块介绍

目录​​​​​​​ 前言 正文 1.功能简介 2.关键概念 3.功能详解 3.1 内存硬件抽象层Ea/Fee的寻址方案 3.2 基本存储对象Basic storage objects 3.2.1 NV Block 3.2.2 RAM Block 3.2.3 ROM Block 3.2.4 Administrative block 3.2.5 NV Block Header 3.3块管理类型…

STM32CubeIDE基础学习-STM32CubeIDE软件快捷键介绍

STM32CubeIDE基础学习-STM32CubeIDE软件快捷键介绍 文章目录 STM32CubeIDE基础学习-STM32CubeIDE软件快捷键介绍前言第1章 查看快捷键方法第2章 设置快捷键方法第3章 常用快捷键示例总结 前言 这个STM32CubeIDE软件使用的是Eclipse框架的开发环境&#xff0c;所以所使用的快捷…

idea创建一个简单的maven项目

个人学习笔记&#xff08;整理不易&#xff0c;有帮助点个赞&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 添加-DarchetypeCataloginternal 运行参数 (ps:不填的话&#xff0c;maven 骨架生成速度缓慢) 其实我没…

信息系统安全与对抗-作业2

目录 1、使用自己姓名拼音创建一个账户&#xff0c; 并使用命令和图形化查看 2、使用自己拼音打头字母创建一个隐藏账户 &#xff0c;并使用命令和图形化查看 3、使用命令启动 telnet 服务 4、使用命令打开防火墙 23 端口 5、熟悉LINUX系统&#xff0c;使用命令行创建用户…

【多线程】常见锁策略详解(面试常考题型)

目录 &#x1f334; 乐观锁 vs 悲观锁&#x1f38d;重量级锁 vs 轻量级锁&#x1f340;自旋锁&#xff08;Spin Lock&#xff09;&#x1f38b;公平锁 vs ⾮公平锁&#x1f333;可重⼊锁 vs 不可重⼊锁&#x1f384;读写锁⭕相关面试题 常⻅的锁策略 注意: 接下来讲解的锁策略不…

安捷伦N5182A信号源 AgilentN5182A

描述&#xff1a; 1&#xff09;信号特性&#xff1a; 250 kHz to 3 or 6 GHz频率范围 (可选低至 100 kHz) 13 dBm 1GHz输出功率 5dBm输出功率时W-CDMA动态范围:单载波 ≤-73 dBc &#xff1b;4载波≤-66 dBc ≤1.2 ms切换速度在SCPI模式 2&#xff09;调制与扫描&#x…