当前位置: 首页 > news >正文

Redis的基本操作

文章目录

  • 1.Redis简介
  • 2.Redis的常用数据类型
  • 3.Redis的常用命令
    • 1.字符串操作命令
    • 2.哈希操作命令
    • 3.列表操作命令
    • 4.集合操作命令
    • 5.有序集合操作命令
    • 6.通用操作命令
  • 4.Springboot配置Redis
    • 1.导入SpringDataRedis的Maven坐标
    • 2.配置Redis的数据源
    • 3.编写配置类,创还能RedisTemplate对象
    • 4.使用RedisTemplate操作Redis对象
  • 5.总结

1.Redis简介

Redis是一款基于内存的key-value结构数据库,它的主要优点有以下几点:

  • 基于内存存储,读写性能高
  • 适合存储热点数据
  • 企业应用广泛

其结构为:

keyvalue
id101

这种为Redis的存储结构。

2.Redis的常用数据类型

Redis存储的是key-value结构的数据,其中key为字符串类型,value有常用的五种数据类型,所有Redis的数据类型更多是相对于value所说。

value的这五种常用类型如下:

  • 字符串类型 String
  • 哈希 hash
  • 列表 List
  • 集合 Set
  • 有序集合 ZSet

这五种类型大概如下图格式:
在这里插入图片描述

其中哈希类似Java中的hashMap集合,列表类似Java中的LinkedList,集合类似Java中的HashSet集合,且无序,有序集合类似Java中的TreeSet。

3.Redis的常用命令

以下命令均可在Redis客户端执行

1.字符串操作命令

set key value     //设置key值和value值
get key           //根据指定key值获取value值
setex key seconds value     //设置key值的value秒后过期
setnx key value       //只有在key值不存在的时候才能设置,存在则无效。

2.哈希操作命令

hset key field value         //添加或设置对应的哈希键值对
hget key field        //根据key和哈希的键获取值
hdel key field        //删除对应的哈希键值对
hkeys key       //获取哈希表中的所有键
hvals key       //获取哈希表中的所有值

3.列表操作命令

lpush key value1 [value2]         //将一个或多个值插入列表
lrange key start stop            //获取指定范围内的元素
rpop key                        //移除并获取列表最后一个元素
len key                          //获取列表长度

4.集合操作命令

SADD key member1 [member2]       //向集合添加一个或多个成员
SMEMBERS key					 //返回集合中的所有成员
SCARD key						 //获取集合的成员数
SINTER key1 [key2]				 //返回给定所有集合的交集
SUNION key1 [key2]				 //返回所有给定集合的并集
SREM key member1 [member2]		 //删除集合中一个或多个成员

5.有序集合操作命令

ZADD key score1 member1 [score2 member2]//向有序集合添加一个或多个成员
ZRANGE key start stop [WITHSCORES]//通过索引区间返回有序集合中指定区间内的成员
ZINCRBY key increment member//有序集合中对指定成员的分数加上增量 increment
ZREM key member [member ..]//移除有序集合中的一个或多个成员

6.通用操作命令

KEYS pattern //查找所有符合给定惯式(patern)的key
EXISTS key //检查给定 key 是否存在
TYPE key //返回 key 所储存的值的类型
DEL key //该命令用于在key存在且删除这个key

4.Springboot配置Redis

redis的Java客户端包括Jedis,Lettuce,Spring Data Redis,我们在Springboot项目中使用易于集成的Spring Data Redis。

以下就是在Springboot项目中如何使用Redis

1.导入SpringDataRedis的Maven坐标

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2.配置Redis的数据源

spring:redis:host: localhostport: 6379database: 0

3.编写配置类,创还能RedisTemplate对象

@Configuration
@Slf4j
public class RedisConfiguration {@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){log.info("创建RedisTemplate");RedisTemplate redisTemplate = new RedisTemplate();//设置Redis连接工厂对象redisTemplate.setConnectionFactory(redisConnectionFactory);//设置RedisTemplate序列化redisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;}
}

4.使用RedisTemplate操作Redis对象

public class SpringDataRedisTest {@Autowiredprivate RedisTemplate redisTemplate;@Testpublic void testSpringDataRedis(){System.out.println(redisTemplate);//字符串类型Redis的操作对象ValueOperations ops = redisTemplate.opsForValue();//List类型的操作对象ListOperations listOperations = redisTemplate.opsForList();//Hash类型的操作对象HashOperations ops1 = redisTemplate.opsForHash();//set类型的操作对象SetOperations setOperations = redisTemplate.opsForSet();//ZSET类型的操作对象ZSetOperations zSetOperations = redisTemplate.opsForZSet();}*/
/*** 操作字符串类型的数据*//*@Testpublic void testString(){//set get setex setnxredisTemplate.opsForValue().set("city","北京");String city = (String) redisTemplate.opsForValue().get("city");System.out.println(city);redisTemplate.opsForValue().set("code","1234",3, TimeUnit.MINUTES);redisTemplate.opsForValue().setIfAbsent("lock","1");redisTemplate.opsForValue().setIfAbsent("lock","2");}*/
/*** 操作哈希类型的数据*//*@Testpublic void testHash(){//hset, hget,hdel,hkeys,hvalsHashOperations ops = redisTemplate.opsForHash();ops.put("100","name","xiaoming");ops.put("100","age","22");String name = (String) ops.get("100", "name");System.out.println(name);Set keys = ops.keys("100");System.out.println(keys);List values = ops.values("100");System.out.println(values);ops.delete("100","age");}*/
/*** 操作列表类型的数据*//*@Testpublic void testList(){//lpush,lrange,rpop,llenListOperations ops = redisTemplate.opsForList();ops.leftPushAll("mylist","a","b","c");ops.leftPush("mylist","d");List mylist = ops.range("mylist", 0, -1);System.out.println(mylist);ops.rightPop("mylist");Long size = ops.size("mylist");System.out.println(size);}*/
/*** 操作集合类型的数据*//*@Testpublic void testSet(){//sadd, smembers,scard,sinter,sunion,sremSetOperations setOperations = redisTemplate.opsForSet();setOperations.add("set1","a","b",'c','d');setOperations.add("set2","a","b",'x','y');Set set1 = setOperations.members("set1");System.out.println(set1);Long size = setOperations.size("set1");System.out.println(size);Set intersect = setOperations.intersect("set1", "set2");System.out.println(intersect);Set union = setOperations.union("set1", "set2");System.out.println(union);setOperations.remove("set1","a","b");}*/
/*** 操作有序集合类型的数据*//*@Testpublic void testZset(){//zadd,zrange,zincrby,zremZSetOperations zSetOperations = redisTemplate.opsForZSet();zSetOperations.add("zset1","a",10);zSetOperations.add("zset1","b",12);zSetOperations.add("zset1","c",9);Set zset1 = zSetOperations.range("zset1", 0, -1);System.out.println(zset1);zSetOperations.incrementScore("zset1","c",10);zSetOperations.remove("zset1","a","b");}*/
/*** 通用命令操作*//*@Testpublic void testCommon(){//keys,exists,type,delSet keys = redisTemplate.keys("*");System.out.println(keys);System.out.println("=======================");Boolean name = redisTemplate.hasKey("name");Boolean set1 = redisTemplate.hasKey("set1");System.out.println(name);System.out.println(set1);System.out.println("======================");for (Object key : keys) {DataType type = redisTemplate.type(key);System.out.println(type);}redisTemplate.delete("mylist");}
}

5.总结

Redis的五种类型主要是对Redis值的操作,对Redis键的操作主要集中在通用命令上,其中最重要的是如何在Springboot项目中使用并且操作Redis,应从使用Java分装的Redis操作类,到连接到Redis服务器,再讲该类配置到该项目中使用,最后使用该类进行具体的操作。

相关文章:

Redis的基本操作

文章目录 1.Redis简介2.Redis的常用数据类型3.Redis的常用命令1.字符串操作命令2.哈希操作命令3.列表操作命令4.集合操作命令5.有序集合操作命令6.通用操作命令 4.Springboot配置Redis1.导入SpringDataRedis的Maven坐标2.配置Redis的数据源3.编写配置类&#xff0c;创还能Redis…...

省级智慧农业大数据平台项目规划建设方案[195页Word]

导读&#xff1a;原文《省级智慧农业大数据平台项目规划建设方案[195页Word]》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 1 农业大数据平台项目概述 1.1 建设…...

php图片批量压缩并同时保持清晰度

php图片压缩可以通过GD库来实现。以下是一个使用GD库进行图片压缩的示例代码&#xff1a; // 原始图片路径 $sourceImage path/to/source/image.jpg; // 压缩后保存的路径及文件名 $compressedImage path/to/compressed/image.jpg; // 压缩后的图片质量&#xff08;1-100&…...

243:vue+Openlayers 更改鼠标滚轮缩放地图大小,每次缩放小一点

第243个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayers项目中设置鼠标滚轮缩放地图大小,每次滑动一格滚轮,设定的值非默认值1。具体的设置方法,参考源代码。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源…...

NOI2015D. 荷马史诗

荷马史诗 题目描述 追逐影子的人&#xff0c;自己就是影子。 ——荷马 Allison 最近迷上了文学。她喜欢在一个慵懒的午后&#xff0c;细细地品上一杯卡布奇诺&#xff0c;静静地阅读她爱不释手的《荷马史诗》。但是由《奥德赛》和《伊利亚特》组成的鸿篇巨制《荷马史诗》实在是…...

并法编程(集合类不安全)03详细讲解未补充

还未补充...

软考:中级软件设计师:大数据

软考&#xff1a;中级软件设计师:大数据 提示&#xff1a;系列被面试官问的问题&#xff0c;我自己当时不会&#xff0c;所以下来自己复盘一下&#xff0c;认真学习和总结&#xff0c;以应对未来更多的可能性 关于互联网大厂的笔试面试&#xff0c;都是需要细心准备的 &#x…...

【持续更新中】QAGroup1

OVERVIEW Q&AGroup1一、语言基础1.C语言&#xff08;1&#xff09;含参数的宏与函数的不同点&#xff08;2&#xff09;sizeof与strlen的区别&#xff08;3&#xff09;大/小端&#xff08;4&#xff09;strcpy与memcpy的区别&#xff08;5&#xff09;extern与static的区别…...

redis应用 2:延时队列

我们平时习惯于使用 Rabbitmq 和 Kafka 作为消息队列中间件&#xff0c;来给应用程序之间增加异步消息传递功能。这两个中间件都是专业的消息队列中间件&#xff0c;特性之多超出了大多数人的理解能力。 使用过 Rabbitmq 的同学知道它使用起来有多复杂&#xff0c;发消息之前要…...

ChatGPT AIGC 实现动态组合图的用法

数据分析组合图,即在一张图表中组合使用多种图形类型(如柱状图、折线图、饼图等),可以在同一视图中展示多个维度或多个量度的数据,帮助数据分析师或决策者更好地理解和解释数据。 组合图的功能和作用主要包括: 提供信息视角:组合图可以对比不同类型的数据,展现数据间的…...

【网站】解压放松的治愈白噪音ASMR

70年代中期国际上新创立的无穷维Schwartz广泛函数理论&#xff0c;应用所严加安研究员是建立和完善该理论的数学框架的主要贡献者之一&#xff0c;他与法国科学院通讯院士Meyer教授提出的框架被称为Meyer-Yan空间。他与Kondratiev等新近发表的论文建立了完善的无穷维非高斯分析…...

算法通过村第四关-栈白银笔记|括号问题

文章目录 前言1. 括号匹配问题2. 最小栈问题3. 最大栈 总结 前言 提示&#xff1a;如果让我送给年轻人四个字&#xff0c;就是&#xff1a;量力而行。 量力而行不会失眠&#xff0c;不会啃老&#xff0c;不会为各种考试焦虑。顺其自然活得轻松。其实&#xff0c;量力而行最易大…...

基于MATLAB开发AUTOSAR软件应用层Code mapping专题-part 6 Data Transfers标签页介绍

这篇文章我们介绍下Data Transfers页的配置,这里边包含的内容是IRV,我之前的文章里有讲解过IRV就是 Inter-Runnable Variables,内部runnable的之间传递数据的变量,在讲解Data Store memory的文章里我们提到了,irv也可以使用Data Store memory的方式来实现,我们先看下IRV如何…...

HDLBits-Verilog学习记录 | Verilog Language-Vectors

文章目录 11.vectors | vector012.vectors in more detail | vector113.Vector part select | Vector214.Bitwise operators | Vectorgates15.Four-input gates | Gates416.Vector concatenation operator | Vector317.Vector reversal 1 | Vectorr18. Replication operator | …...

彻底搞懂 PHP 运算符 ?: 和 ??

文章目录 快速掌握?: 短三元运算符?? NULL 合并运算符 附上官方文档查阅方式 快速掌握 ?: 短三元运算符 ?: 称之为短三元运算符&#xff0c;它是我们熟悉的三元运算符&#xff08;也叫做条件运算符&#xff09;的一种特殊写法&#xff0c;也就是省略了三元运算符中间的部…...

贝叶斯人工智能大脑与 ChatGPT

文章目录 一、前言二、主要内容 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 论文地址&#xff1a;https://arxiv.org/abs/2308.14732 这篇论文旨在研究 Chat Generative Pre-trained Transformer&#xff08;ChatGPT&#xff09;在贝叶斯…...

适应高速率网络设备的-2.5G/5G/10G网络变压器/网络滤波器介绍

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;在高速发展的互联网/物联网时代&#xff0c;为满足高网速的网络数据传输需求&#xff0c;网络设备在制造中也要选用合适的网络变压器/滤波器产品&#xff0c;有哪些可供选择的高速率网络变压器产品也是广大采购人员…...

「Redis」1. 数据类型的底层实现

前言&#xff1a;在这篇博文中&#xff0c;我们将简单总结在面试中怎么回答Redis数据类型的底层实现。 因为面试时间就那么点&#xff0c;言简意赅的描述自己会的知识显得尤为重要‼️ 文章目录 0.1. String 的底层实现原理0.2. 列表的底层实现原理0.3. 字典的底层实现原理0.4.…...

Win11共享文件,能发现主机但无法访问,提示找不到网络路径

加密长度选择如下&#xff1a; 参考以下链接&#xff1a; Redirectinghttps://answers.microsoft.com/zh-hans/windows/forum/all/win11%E8%AE%BE%E7%BD%AE%E6%96%87%E4%BB%B6%E5%A4%B9/554343a9-d963-449a-aa59-ce1e6f7c8982?tabAllReplies#tabs...

ROS中使用Navigation报错信息

在ROS中使用遇到了几个Navigation报错信息&#xff0c;在这里进行下记录&#xff1a; [ WARN] [1688134727.429227824]: The origin for the sensor at (7.35, 13.12) is out of map bounds. So, the costmap cannot raytrace for it. 解决办法&#xff1a; [ WARN] [16881…...

革新性跨系统应用运行方案:APK Installer实现Windows原生Android应用体验

革新性跨系统应用运行方案&#xff1a;APK Installer实现Windows原生Android应用体验 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 当您急需在Windows电脑上运行某个…...

UE后期处理材质实战:从黑白蒙版到卡通渲染的进阶应用

1. 黑白蒙版遮罩的底层原理与应用 在UE4后期处理材质中&#xff0c;黑白蒙版遮罩是最基础也最实用的功能之一。我第一次接触这个功能时&#xff0c;被它强大的选择性处理能力惊艳到了——它能像手术刀一样精准地分离出场景中的特定物体。 核心原理其实很简单&#xff1a;通过Sc…...

别再为Allegro导图发愁了!手把手教你用RATA工具搞定BMP单色图转换(附像素调整避坑指南)

Allegro图片导入难题终极指南&#xff1a;从原理到实战的完整解决方案 在PCB设计领域&#xff0c;Allegro作为行业标杆工具&#xff0c;却有一个让无数工程师头疼的"阿喀琉斯之踵"——图片导入功能。无论是公司Logo、结构示意图还是特殊标识&#xff0c;当我们需要将…...

实测通义千问3-Reranker-0.6B:轻量模型如何让电商商品搜索更准确

实测通义千问3-Reranker-0.6B&#xff1a;轻量模型如何让电商商品搜索更准确 1. 电商搜索的痛点与解决方案 在电商平台上&#xff0c;用户输入"真丝连衣裙"却看到牛仔裤推荐&#xff0c;这种糟糕的搜索体验每天都在发生。传统搜索技术依赖关键词匹配和简单规则&…...

BiLSTM时间序列预测实战:用Python搞定股票价格预测(附完整代码)

BiLSTM金融时间序列预测&#xff1a;从理论到实战的Python完整指南 金融市场如同汹涌的海浪&#xff0c;价格波动背后隐藏着无数投资者的决策与情绪。对于量化分析师和算法交易者而言&#xff0c;准确预测这些波动意味着巨大的商业价值。传统的时间序列分析方法如ARIMA在面对非…...

ESLint-Plugin-React 终极配置指南:如何创建适合不同团队的个性化规则组合

ESLint-Plugin-React 终极配置指南&#xff1a;如何创建适合不同团队的个性化规则组合 【免费下载链接】eslint-plugin-react React-specific linting rules for ESLint 项目地址: https://gitcode.com/gh_mirrors/es/eslint-plugin-react ESLint-Plugin-React 是一个专…...

RePKG开发者指南:深入理解C逆向工程实现原理

RePKG开发者指南&#xff1a;深入理解C#逆向工程实现原理 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg RePKG是一款强大的 Wallpaper Engine PKG文件提取与TEX图像转换工具&#…...

告别NVIDIA?ZLUDA让你的AMD显卡秒变CUDA设备

告别NVIDIA&#xff1f;ZLUDA让你的AMD显卡秒变CUDA设备 【免费下载链接】ZLUDA CUDA on Intel GPUs 项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA 在AI计算和高性能图形处理领域&#xff0c;CUDA生态曾长期被NVIDIA显卡垄断&#xff0c;高昂的硬件成本让许…...

告别Windows AI困扰:RemoveWindowsAI工具全方位解决方案

告别Windows AI困扰&#xff1a;RemoveWindowsAI工具全方位解决方案 【免费下载链接】RemoveWindowsAI Force Remove Copilot and Recall in Windows 项目地址: https://gitcode.com/GitHub_Trending/re/RemoveWindowsAI 在数字时代的隐私保卫战中&#xff0c;Windows系…...

Apache-Guacamole实战:用Docker三分钟搞定Windows11远程控制环境搭建

Apache-Guacamole实战&#xff1a;三分钟Docker部署Windows11远程控制环境 远程办公和跨平台协作已成为现代开发者的日常需求。想象一下这样的场景&#xff1a;你正在咖啡馆用MacBook调试代码&#xff0c;突然需要访问办公室的Windows11开发环境&#xff1b;或是团队需要共享一…...