Java真的不难(四十八)Redis的入门及使用(1)

news/2024/5/6 8:12:09/文章来源:https://blog.csdn.net/m0_57310550/article/details/126884310

Redis的入门及使用:

一、什么是Redis?

REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库,Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。

Redis 官网:https://redis.io/
Redis源码地址:https://github.com/redis/redis

特点:

  1. 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s
  2. 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作
  3. 原子性:所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来即可
  4. 丰富的特性,支持 publish/subscribe, 通知, key 过期等等特性
  5. 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
  6. 支持数据的备份,即master-slave模式的数据备份

二、Redis的安装

下载地址:https://github.com/tporadowski/redis/releases
找到自己电脑系统的版本(这里以Windows为例):
在这里插入图片描述
下载完毕解压即可

包内可得到以下文件:
在这里插入图片描述
Redis 的配置文件位于 Redis 安装目录下,文件名为redis.windows.conf,也就是上图第五个文件。

启动:
首先双击start.bat文件,可以打开以下界面:
在这里插入图片描述
任何不要关闭此窗口,重新打开一个cmd窗口,输入指令:redis-cli.exe -h 127.0.0.1 -p 6379
若无报错,即启动成功!


三、Redis的数据类型

Redis支持五种数据类型:

  1. string(字符串)
  2. hash(哈希)
  3. list(列表)
  4. set(集合)
  5. zset(sorted set:有序集合)

String:
字符串类型没什么好说的,就是大家理解的字符串,比如name:‘‘张三’’
String 类型是二进制且安全的,意思是 Redis 的 String 可以包含任何数据。比如jpg图片或者序列化的对象,String 类型是 Redis 最基本的数据类型,String 类型的值最大能存储 512MB

Hash:
Redis hash 是一个键值(key=>value)对集合,也是一个 String 类型的 field 和 value 的映射表,Hash 特别适合用于存储对象,比如:
输入指令: HMSET runoob name "zhangsan" age "15"
取值:HGET runoob name / HGET runoob age
在这里插入图片描述
上面使用了 Redis HMSET, HGET 命令,HMSET 设置了两个 field=>value 对, HGET 获取对应 field 对应的 value。每个 hash 可以存储 232 -1 键值对(大概40多亿)

List:
列表也是大家理解的列表,按照插入顺序排序。你可以添加一个元素到列表的头部或者尾部:
在这里插入图片描述
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)

Set:
Redis 的 Set 是 String 类型的无序集合,集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)
添加一个 String 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0
在这里插入图片描述
集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)

zset(有序集合):
zset 和 set 一样也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序,zset的成员是唯一的,但分数(score)却可以重复:
在这里插入图片描述


四、Redis命令

Redis 命令用于在 redis 服务上执行操作
Redis 客户端的基本语法为:redis-cli
启动 redis 服务器,打开终端并输入命令 redis-cli,该命令会连接本地的 redis 服务:
在这里插入图片描述
执行 PING 命令,该命令用于检测 redis 服务是否启动

远程 redis 服务上执行命令,也是使用 redis-cli 命令redis-cli -h host -p port -a password
在p后输入端口号,pwd处替换为密码即可,比如:redis-cli -h 127.0.0.1 -p 6379 -a "123456"


Redis 键(key)命令:
Redis 键命令的基本语法:COMMAND KEY_NAME
在这里插入图片描述
在以上实例中 DEL 是一个命令, person 是一个键。 如果键被删除成功,命令执行后输出 (integer) 1,否则将输出 (integer) 0

其他键指令:
序列化给定 key ,并返回被序列化的值:DUMP key
检查给定 key 是否存在:EXISTS key
设置 key 的过期时间以秒计: EXPIRE key seconds
设置 key 的过期时间以毫秒计:PEXPIRE key milliseconds
设置 key 过期时间的时间戳以毫秒计:PEXPIREAT key milliseconds-timestamp
移除 key 的过期时间,key 将持久保持:PERSIST key
以毫秒为单位返回 key 的剩余的过期时间: PTTL key
从当前数据库中随机返回一个 key :RANDOMKEY
修改 key 的名称:RENAME key newkey
返回 key 所储存的值的类型:YPE key

其他更全面的指令大家可以自行查阅


Redis 字符串(String)指令:
Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法:COMMAND KEY_NAME

在这里插入图片描述
在上述图中使用了 SET 和 GET 命令,键为 person

其他主要的String指令:
返回 key 中字符串值的子字符:GETRANGE key start end
将给定 key 的值设为 value ,并返回 key 的旧值:GETSET key value
只在 key 不存在时设置 key 的值:SETNX key value
返回 key 所储存的字符串值的长度:STRLEN key
同时设置一个或多个 key-value 对:MSET key value [key value ...]

其他更全面的指令大家可以自行查阅


Redis 哈希(Hash)指令:
Hash 特别适合用于存储对象:
在这里插入图片描述
设置一个对象person,有名字、年龄、性别、爱好信息

其他主要的Hash指令:
删除一个或多个哈希表字段:HDEL key field1 [field2]
查看哈希表 key 中指定的字段是否存在: HEXISTS key field
获取存储在哈希表中指定字段的值: HGET key field
获取在哈希表中指定 key 的所有字段和值:HGETALL key
获取所有哈希表中的字段:HKEYS key
获取哈希表中字段的数量: HLEN key
获取哈希表中所有值: HVALS key
将哈希表 key 中的字段 field 的值设为 value:HSET key field value

其他更全面的指令大家可以自行查阅


Redis 列表(List)指令:

通过索引获取列表中的元素:LINDEX key index
在列表的元素前或者后插入元素: LINSERT key BEFORE|AFTER pivot value
获取列表长度:LLEN key
移出并获取列表的第一个元素: LPOP key
将一个或多个值插入到列表头部:LPUSHX key value
获取列表指定范围内的元素: LRANGE key start stop
移除列表元素:LREM key count value
通过索引设置列表元素的值:LSET key index value
移除列表的最后一个元素,返回值为移除的元素:RPOP key
在列表中添加一个或多个值:RPUSH key value1 [value2]
为已存在的列表添加值: RPUSHX key value

其他更全面的指令大家可以自行查阅


Redis 集合(Set)指令:

Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据:
在这里插入图片描述
图中通过 sadd 命令向名为 phone 的集合插入的三个元素,若重复数据则返回0

其他主要的Set指令:

向集合添加一个或多个成员:SADD key member1 [member2]
获取集合的成员数:SCARD key
返回第一个集合与其他集合之间的差异:SDIFF key1 [key2]
返回给定所有集合的交集:SINTER key1 [key2]
判断 member 元素是否是集合 key 的成员:SISMEMBER key member
返回集合中的所有成员: SMEMBERS key
移除并返回集合中的一个随机元素:SPOP key
返回集合中一个或多个随机数:SRANDMEMBER key [count]
移除集合中一个或多个成员:SREM key member1 [member2]
返回所有给定集合的并集:SUNION key1 [key2]

其他更全面的指令大家可以自行查阅


Redis 有序集合(sorted set)指令:

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员:
在这里插入图片描述
图中通过命令 zadd向 Redis 的有序集合中添加了三个值并关联上分数

其他主要的Sorted Set指令:
向有序集合添加一个或多个成员,或者更新已存在成员的分数: ZADD key score1 member1 [score2 member2]
获取有序集合的成员数: ZCARD key
计算在有序集合中指定区间分数的成员数:ZCOUNT key min max
通过索引区间返回有序集合指定区间内的成员:ZRANGE key start stop [WITHSCORES]
返回有序集合中指定成员的索引:ZRANK key member
移除有序集合中的一个或多个成员: ZREM key member [member ...]
移除有序集合中给定的分数区间的所有成员:ZREMRANGEBYSCORE key min max
返回有序集中,成员的分数值: ZSCORE key member
计算给定的一个或多个有序集的并集,并存储在新的 key 中:ZUNIONSTORE destination numkeys key [key ...]

其他更全面的指令大家可以自行查阅


好啦 大家快去试试吧,其他进阶内容将在后续文章中介绍~~

在这里插入图片描述

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

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

相关文章

Tableau文件管理

Tableau文件管理 可以使用多种不同的Tableau文件类型,如工作簿、打包工作簿、数据提取、数据源和书签等,来保存和共享工作成果和数据源,见下表。 下面对常用的文件类型分别进行介绍。 Tableau工作簿(.twb)&#xff1…

XML 测试用例分类Variants参数

🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe&…

#2 我们有多少技术债务,每年花费多少?

#2 我们有多少技术债务,每年花费多少? 从系列中,董事会成员应该问的 7 个问题让我们从定义技术债务开始。 传统定义: 将快速交付优先于好的代码。 仁的定义: 将交付速度置于所有其他工作之上,几乎总是包括关键任务,导致工作积压不断累积,成本不断增加。 累积的技术债务…

国泰环保递交注册:年营收3.3亿同比降28% 陈柏校夫妇为实控人

雷递网 雷建平 9月20日杭州国泰环保科技股份有限公司(简称:“国泰环保”)日前递交注册,准备在深交所创业板上市。国泰环保计划募资3.3亿元,其中,1.58亿元用于成套设备制造基地项目,1.71亿元用于…

Windows 11 22H2 (2022 年更新) 发布,简体中文版、英文版下载

2022 年 9 月 20 日 今天,Windows 11 2022 更新在 190 多个国家/地区推出。 随着去年 Windows 11 的推出,我们对 PC 进行了现代更新,让您可以更快、更轻松地完成您最依赖于 PC 的任务。我们在家庭和工作场所的 Windows 中添加了内置的基础安…

【元宇宙欧米说】SchrodingerHQ:如何玩转NFT+盲盒的商业新模式

闲置的NFT如何更好地再进入市场流通?NFT与盲盒结合如何创造“11>2”的商业价值? 9月27日下午四点,SchrodingerHQ项目商务拓展TJ将以“SchrodingerHQ:如何玩转NFT盲盒的商业新模式”为题,与大家共同探讨现如…

【毕业设计】单片机森林火灾监控防护预警系统 - 物联网 嵌入式

文章目录0 前言1 简介2 主要器件3 实现效果4 硬件设计SIM800L模块的工作原理基于物联网的森林火灾探测系统框图Arduino火灾检测系统的电路图5 软件说明用于基于物联网的森林火灾检测的Arduino程序设置Thingspeak帐户6 最后0 前言 🔥 这两年开始毕业设计和毕业答辩的…

【牛客 - 剑指offer】JZ7 重建二叉树 Java实现 两种方案(递归+非递归stack)

文章目录剑指offer题解汇总 Java实现本题链接题目方案一 递归方案二 非递归 用栈实现剑指offer题解汇总 Java实现 https://blog.csdn.net/guliguliguliguli/article/details/126089434 本题链接 知识分类篇 - 树 - JZ7 重建二叉树 题目 题目的主要信息 根据二叉树的前序和中…

计算机组成原理笔记(王道考研) 第一章:计算机系统概述

内容基于中国大学MOOC的2023考研计算机组成原理课程所做的笔记。 感谢LY,他帮我做了一部分笔记。由于听的时间不一样,第四章前的内容看起来可能稍显啰嗦,后面会记得简略一些。 西电的计算机组织与体系结构课讲法和王道考研的课不太一样&…

Affinity Propagation (AP)近邻传播聚类

近邻传播聚类:根据 N 个数据点之间的相似度聚类,相似度可以是对称的,即两个数据点互相之间的相似度一样(如欧氏距离);也可以是不对称的,即两个数据点互相之间的相似度不等。这些相似度组成 NN 的相似度矩阵 S (N代表N个…

IP静态路由

IP静态路由基础概述 为了实现数据的转发,路由器必须有能力建立、刷新路由表,并根据路由表转发数据包 定义 路由是数据通信网络中的最基本的要素。路由信息就是知道报文发送的路径信息,路由的过程就是报文中继转发的过程 目的 为了实现数据的转发,路由器、路由表和路由协议是…

selenium工具之find_element(by=By.xx, value=xxx) find_elements(by=By.xx, value=xxx)详解

前言 selenium是一款十分强大的Web应用自动化框架,我们可以通过它来自动操控浏览器。操控浏览器的实质是操控浏览器的界面元素,因此定位元素是使用selenium的关键,selenium中通过 find_element() 方法来完成定位。 用法 1、通过webdriver对象的 find_element(by="属性名…

【教程】在 visual studio 共享和重用项目属性

环境 os:windows 10IDE:visual studio 2015 前言 在 visual studio 下开发项目时,通常会配置项目的属性,比如引入外部头文件,引入外部库之类的 尤其是不同的开发模式,debug 和 release,不同…

PHP+经贸时间轴 毕业设计-附源码211617

基于php经贸时间轴小程序 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,经贸时间轴小程序被用户普遍使用…

Cache与内存映射

全相联 主存的某一Block可以映射到Cache中的任意一Block&#xff0c;多对多N<>M&#xff1b; 全相联地址格式&#xff1a; 高位为块地址与tag比较&#xff0c;offset负责取出Block内的字节 放一道例题把&#xff1a; 既然新开了一章写就写的细一点&#xff0c;Cache全…

深度学习入门:基于Python的理论与实现

1.Python入门 python中使用class关键字来定义类&#xff1a; class 类名&#xff1a;def __init__(self, 参数,...):#构造函数...def 方法1(self, 参数, ...): # 方法1...def 方法2(self, 参数, ...): # 方法2...这里有一股特殊的__init__方法&#xff0c;这是进行初始化的方…

合成/聚合复用原则

合成/聚合复用原则 很多情况继承会带来麻烦:对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常密切的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当需要复用子类时,如果继承下来的实现不适合解决新…

港科夜闻|香港科大为庆祝建校30周年举办慈善义卖,限量推出一批具有收藏价值的非同质化代币(NFT)艺术精品...

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科大为庆祝建校30周年举办慈善义卖&#xff0c;限量推出一批具有收藏价值的非同质化代币(NFT)艺术精品。这系列NFT艺术收藏品的亮点&#xff0c;就是26款按英文字母A至Z排列、重现香港科大生活点滴的原创数码图像&#…

【计算机网络】第五章 传输层

第五章 传输层 一、传输层概述 传输层功能 协议&#xff1a;TCP和UDP 是只有主机才有的层次 功能&#xff1a; 提供进程和进程之间的通信&#xff0c;网络层提供的是主机之间的通信复用和分用&#xff1a;将数个进程的信息复用起来&#xff0c;发送出去&#xff1b;收到信息…

安装 Windows Server 2019 VM虚拟机

目录&#xff08;1&#xff09;系统语言设置&#xff08;2&#xff09;点击【Install now】&#xff08;3&#xff09;激活Windows&#xff08;4&#xff09;选择安装版本&#xff08;5&#xff09;同意【license terms】&#xff08;6&#xff09;选择安装类型&#xff08;7&a…