自学Redis7入门篇一

自学Redis7入门篇一

    • Redis概述
    • 一、Redis是什么?
    • 二、Redis能干什么?
    • 三、去哪里下
    • 四、Redis安装配置
    • 五、Redis 10数据类型
      • 1.字符串(String)
      • 2.列表(List)
      • 3.哈希表(Hash)
      • 4.集合(Set)
      • 5.有序集合(ZSet)
      • 6.地理空间(GEO)
      • 7.基数统计(HyperLogLog)
      • 8.位图(bitmap)
      • 9.位域(bitfield)
      • 10.流i(Stream)
    • 六、常见数据操作类型命令
    • 七、Redis 键(key)
    • 八、10大数据类型命令操作运用

Redis概述

一、Redis是什么?

Remote Dictionary Server(远程字典服务)是完全开源的,使用ANSIC语言编写遵守BSD协议,是一个高性能的Key-Value数据库提供了丰富的数据结构,例如String、Hash、List、Set、SortedSet等等。数据是存在内存中的,同时Redis支持事务、持久化、LUA脚本、发布/订阅、缓存淘汰、流技术等多种功能特性提供了主从模式、Redis Sentinel和Redis Cluster集群架构方案。
Redis之父—安特雷兹
Github: https://github.com/antirez
个人博客: http://antirez.com/latest/0

在这里插入图片描述

二、Redis能干什么?

在这里插入图片描述

与传统数据库关系(mysql)
Redis是key-value数据库(NoSQL一种),mysql是关系数据库
Redis数据操作主要在内存,而mysql主要存储在磁盘
Redis在某一些场景使用中要明显优于mysql,比如计数器、排行榜等方面
Redis通常用于一些特定场景,需要与Mysql一起配合使用
两者并不是相互替换和竞争关系,而是共用和配合使用

主流功能与应用
1.分布式缓存,挡在MySQL数据库之前的带刀护卫
2.内存存储和持久化(RDB+AOF)Redis之前异步将内存中的数据写到硬盘上,同时不影响继续服务。
3.高可用架构搭配(单机,主从,哨兵,集群)
4.缓存穿透,击穿,雪崩
5.分布式锁
6.队列(Reids提供list和set操作,这使得Redis能作为一个很好的消息队列平台来使用。
我们常通过Reids的队列功能做购买限制。比如到节假日或者推广期间,进行一些活动,
对用户购买行为进行限制,限制今天只能购买几次商品或者一段时间内只能购买一次。也比 较适合适用。)
7.排行榜+点赞(在互联网应用中,有各种各样的排行榜,如电商网站的月度销量排行榜、社交APP的礼物排行榜、小程序的投票排行榜等等。Redis提供的zset数据类型能够快速实现这些复杂的排行榜。
比如小说网站对小说进行排名,根据排名,将排名靠前的小说推荐给用户)

redis优势
性能极高- Redis能读的速度是110000次/秒,写的速度是81000次/秒
Redis数据类型丰富,不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
Redis支持数据的备份,即master-slave模式的数据备份。
在这里插入图片描述

三、去哪里下

官网地址:
英文:https://redis.io/
中文:http://www.redis.cn/
https://www.redis.com.cn/documentation.html

下载安装包
https://redis.io/download/ 本次下载 redis-7.0.0.tar.gz

其它文档资料
Redis源码地址 https://github.com/redis/redis 中国大陆打开慢 多刷几次或梯子试试
Redis在线测试 https://try.redis.io/
Redis命令参考 http://doc.redisfans.com/

四、Redis安装配置

Linux安装Redis参考 https://blog.csdn.net/weixin_43154319/article/details/138249899?spm=1001.2014.3001.5501

五、Redis 10数据类型

在这里插入图片描述
注意: 这里说的数据类型是value的数据类型,key的类型都是字符串

1.字符串(String)

String(字符串)
string是redis最基本的类型,一个key对应一个value。
string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M

2.列表(List)

List(列表)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部 (左边)或者尾部(右边)

它的底层实际是个双端链表,最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)

3.哈希表(Hash)

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)

4.集合(Set)

Set(集合)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,集合对象的编码可以是 intset 或者 hashtable。
Redis 中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)

5.有序集合(ZSet)

zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
zset集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 2^32 - 1

6.地理空间(GEO)

Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,包括:
添加地理位置的坐标。
获取地理位置的坐标。
计算两个位置之间的距离。
根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。

7.基数统计(HyperLogLog)

HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定且是很小的。

在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

8.位图(bitmap)

在这里插入图片描述由0和1状态表现的二进制位的bit数组

9.位域(bitfield)

通过bitfield命令可以一次性操作多个比特位域(指的是连续的多个比特位,它会执行一系列操作并返回一个响应数组,这个数组中的元素对应参数列表中的相应操作的执行结果。

说白了就是通过bitfield命令我们可以一次性对多个比特位域进行操作。

10.流i(Stream)

Redis Stream 是 Redis 5.0 版本新增加的数据结构。

Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。

简单来说发布订阅 (pub/sub) 可以分发消息,但无法记录历史消息。

而 Redis Stream 提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失

六、常见数据操作类型命令

官网英文:https://redis.io/commands/
官网中文:http://www.redis.cn/commands.html

七、Redis 键(key)

常用
在这里插入图片描述
案例
keys * e 查看当前库所有的key
exists key 判断某个key是否存在
type key 查看你的key是什么类型
del key 删除指定的key数据
unlink keye 非阻塞删除,仅仅将keys从keyspace元数据中删除,真正的删除会在后续异步中操作。
ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期
expire key 秒钟 为给定的key设置过期时间
move key dbindex【0-15】 将当前数据库的 key移动到给定的数据库 db 当中
select dbindex 切换数据库【0-15】,默认为0
dbsize 查看当前数据库key的数量
flushdb 清空当前库
flushall 通杀全部库

八、10大数据类型命令操作运用

注意:命令不区分大小写,而key是区分大小写的
查看命令API , help@类型(例如:help@string;help@list;help@hsah;)

字符串(String)

常用语法
set  key value  //设置值
get  key 		//获取值同时设置、获取多个值
MSET key value [key value ....]
MSET key [key ...]
mset/mget/msetnx27.0.0.1:6379> mset key1 aa key2 bb key3 cc
OK
127.0.0.1:6379> mget key1 key2 key3
1) "aa"
2) "bb"
3) "cc"
127.0.0.1:6379> 获取指定区间范围内的值,类似between......and的关系
--从零到负一表示全部127.0.0.1:6379> set key5 abcd1234
OK
127.0.0.1:6379> getrange key5 0 -1
"abcd1234"
127.0.0.1:6379> 数据增减 (一定是数字才能进行加减)
INCR key  //递增数值  
INCRBY key increment  //增加指定的整数
应用场景:1、比如抖音点赞某个视频或者商品,点一下加一次;2、是否喜欢的文章DECR key  //递减数值
DECRBY key decrement //减少指定的整数STRLEN key //获取字符串长度
APPEND key value //内容追加getset key value //getset一起使用//分布式锁
setex:设置带过期时间的key,动态设置。
setex 键 秒值 真实值
语法: set key value127.0.0.1:6379> setex k8 15 hello
OK
127.0.0.1:6379> ttl k8
(integer) 6
127.0.0.1:6379> ttl k8
(integer) 3
127.0.0.1:6379> ttl k8
(integer) 1
127.0.0.1:6379> ttl k8
(integer) -2
127.0.0.1:6379>

列表(List)
哈希(Hash)
集合(Set)
有序集合Zset(sorted set)
位图(bitmap)
基数统计(HyperLogLog)
Redis地理空间(GEO)
流(Stream)
位域(bitfield)

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

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

相关文章

计算机毕业设计PHP+vue体检预约管理系统d1yu38

防止在使用不同数据库时,由于底层数据库技术不同造成接口程序紊乱的问题。通过本次系统设计可以提高自己的编程能力,强化对所学知识的理解和运用 本系统是一个服务于医院先关内容的网站,在用户打开网站的第一眼就要明白网站开发的目的&#x…

01.本地工作目录、暂存区、本地仓库三者的工作关系

1.持续集成 1.持续集成CI 让产品可以快速迭代,同时还能保持高质量。 简化工作 2.持续交付 交付 3.持续部署 部署 4.持续集成实现的思路 gitjenkins 5.版本控制系统 1.版本控制系统概述2.Git基本概述3.Git基本命令 2.本地工作目录、暂存区、本地仓库三者的工作关系…

[数据结构]———归并排序

具体代码:在gitee仓库:登录 - Gitee.com 目录 ​编辑 1.基本思想: 2. 代码解析 1.分析 2.逻辑图 3.运行结果 1.基本思想: 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分…

算法打卡day40

今日任务: 1)139.单词拆分 2)多重背包理论基础(卡码网56携带矿石资源) 3)背包问题总结 4)复习day15 139单词拆分 题目链接:139. 单词拆分 - 力扣(LeetCode) …

Pytorch学习笔记——TensorBoard的初使用

1、TensorBoard介绍 TensorBoard是TensorFlow的可视化工具,但它也可以与PyTorch结合使用。TensorBoard提供了一个Web界面,可以展示你训练过程中的各种信息,如损失值、准确度、权重分布等,更好地帮助开发者理解和调试模型。 Tenso…

huggingface里如何查看具体任务的评估指标

如果我们在做一个模型训练任务的时候,可能会不知道这个任务在评估的时候使用什么指标,那么huggingface里边为我们提供了参考: 下面就来看看吧: https://huggingface.co/https://huggingface.co/ 点击"Docs"&#xff…

【算法】【单调栈】【leetcode】1019. 链表中的下一个更大节点

刷这题之前先看: 【算法】【OD算法】【单调栈】找朋友-CSDN博客 【算法】【单调栈】【leetcode】1475. 商品折扣后的最终价格-CSDN博客 【算法】【单调栈】【leetcode】901. 股票价格跨度-CSDN博客 【算法】【单调栈】每日温度-CSDN博客 题目地址&#xff1…

嵌入式硬件中PCB走线与过孔的电流承载能力分析

简介 使用FR4敷铜板PCBA上各个器件之间的电气连接是通过其各层敷着的铜箔走线和过孔来实现的。 由于不同产品、不同模块电流大小不同,为实现各个功能,设计人员需要知道所设计的走线和过孔能否承载相应的电流,以实现产品的功能,防止过流时产品烧毁。 文中介绍设计和测试FR4敷…

iOS分享弹窗

klkxxy/分享菜单弹窗

抖音视频0粉营销推广墙纸,当日收益,第二天提现,日入300

项目简介: 这个项目非常易于执行,主要涉及在抖音平台上分享爱国主题的壁纸,并通过推广相关的小程序来实现盈利。 下 载 地 址 : laoa1.cn/1849.html 项目操作简便,一般只需花费1个小时即可完成,一旦掌…

408数据结构-二叉树的概念、性质与存储结构 自学知识点整理

前置知识:树的基本概念与性质 二叉树的定义 二叉树是一种特殊的树形结构,其特点是每个结点至多只有两棵子树(即二叉树中不存在度大于 2 2 2的结点),并且二叉树是有序树,左右子树不能互换。 与树类似&#…

探索和构建 LLaMA 3 架构:深入探讨组件、编码和推理技术(三)KV缓存

探索和构建 LLaMA 3 架构:深入探讨组件、编码和推理技术(三) KV缓存 在推理的每一步中,只对模型输出的最后一个标记感兴趣,因为已经有了之前的标记。然而,模型需要访问所有先前的标记来决定输出哪个标记&…

07 - 步骤 javaScript代码

简介 JavaScript 代码是通过 JavaScript 脚本步骤来执行 JavaScript 脚本的一种方式。这允许用户在 Kettle 的数据流程中使用 JavaScript 编写自定义的脚本逻辑,用于数据处理、转换、计算等操作。 使用 场景 我需要在数据流加一个字段 createTime 当前时间&…

《有限元分析及应用》《有限元分析基础教程》-曾攀-清华大学|pdf电子书+有限元分析及应用视频教程(全85讲) 曾攀、雷丽萍 ​​​+课件PPT

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…

找不到msvcr110.dll的多种解决方法,轻松解决dll问题

在日常使用计算机的时候,突然提示:“由于找不到msvcr110.dll,无法继续执行代码”。这个错误通常发生在运行某些程序时,系统无法找到所需的动态链接库文件。这个问题可能会给用户带来困扰,但是不用担心,下面…

QT:输入类控件的使用

LineEdit 录入个人信息 #include "widget.h" #include "ui_widget.h" #include <QDebug> #include <QString>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// 初始化输入框ui->lineEdit…

stm32f103zet6_串口实现-DHT11-tim1(定时)

1思路 1打开时钟 1.1使用定时器实现us级的计时 1.2在打开串口 1,3在DHT11驱动中修改引脚 stm32cudeMX 配置 1打开时钟 2打开串口 3打开tim1(定时器) 4生成代码 代码设置 1导入DHT11库(tim.h是定时器的文件系统自动生成的) DHT11.c #include "dht11.h" #inc…

真香!剪映专业版VIP,解锁限制功能!

01 软件介绍 剪映专业版采用更直观更全能易用的创作面板&#xff0c;让专业剪辑变得更简单高效&#xff0c;为更多人提供畅爽的专业剪辑体验&#xff0c;让更多人享受视频创作的乐趣! 剪映专业版引入强大黑罐头素材库&#xff0c;支持搜索海量音频、表情包、贴纸、花字、特效…

TCP协议在物联网中的实战

一、TCP协议介绍 网上对TCP协议介绍众多&#xff0c;本人按照自己的理解简单介绍一下。 TCP&#xff08;Transmission Control Protocol&#xff0c; 传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输控制层通信协议。 1.1 协议机制 1.1.1 三次握手 &…

使用LwIP实现TCP Client通信(基于STM32F407)

目录 概述 1 功能介绍 1.1 代码框架 2.2 搭建系统 2 TCP Client功能实现 2.1 代码实现 2.2 具体代码 3 功能测试 3.1 测试功能描述 3.2 运行代码 测试代码下载地址&#xff1a; stm32-f407-dm9161-LwIP-tcp-client资源-CSDN文库 概述 本文主要介绍使用STM32F407和…