Redis01

springboot+redis

特点

1.高效性
2.支持多种数据结构
String,list,set,hash.zset
3.稳定性:持久化,主从复制(集群)
4.其他特性:支持过期时间,支持事务,消息订阅。

安装

1.下载安装包
redis官网地址:
https://redis.io/ (https://redis.io/)
中文网站
http://www.redis.cn/ (http://www.redis.cn/)
2.解压Redis压缩包完成即安装完毕
在这里插入图片描述

3.一些其他配置
启动服务
在redis目录下cmd,输入 redis-server.exe redis.windows.conf
默认端口号
6379
客户端
在redis目录下cmd,输入 redis-cli.exe -h localhost -p 端口号
注册成为服务
在redis目录下cmd,输入 redis-server --service-install redis.windows-service.conf --loglevel verbose
设置密码
在redis.window.conf文件夹下输入,requirepass 123456,redis.window-service.conf要同步修改
登录
在redis目录下cmd,输入 auth 密码

不同数据结构的方法

String
在这里插入图片描述

SpringBootTest
class SpringBootRedisApplicationTests {@Autowiredprivate RedisTemplate redisTemplate;@AutowiredStringRedisTemplate stringRedisTemplate;//防止乱码//存值StringRedisTemplate相当于RedisTemplate<String, String>@Testvoid contextLoads() {redisTemplate.opsForValue().set("j4061", "张三");stringRedisTemplate.opsForValue().set("j4062", "张三");}//获取值@Testvoid getValue() {System.out.println(stringRedisTemplate.opsForValue().get("j4061"));}//设置过期时间@Testvoid setTimeValue(){stringRedisTemplate.opsForValue().set("code", "123", 60, SECONDS);}//判断是否存在并设置值@Testpublic void setNX(){//如果有对应的键值,则设置值并返回true,如果没有对应的键值,则返回falseSystem.out.println(stringRedisTemplate.opsForValue().setIfPresent("j4062", "123"));//如果有对应的键值,则返回false,如果没有对应的键值,则返回trueSystem.out.println(stringRedisTemplate.opsForValue().setIfAbsent("j4062", "张三"));}

hash
在这里插入图片描述

 @Autowiredprivate StringRedisTemplate stringRedisTemplate;//存入hash@Testvoid setHash(){stringRedisTemplate.opsForHash().put("hash", "key1", "value1");stringRedisTemplate.opsForHash().put("hash", "key2", "value2");stringRedisTemplate.opsForHash().put("hash", "key3", "value3");}//获取hash@Testvoid getHash(){System.out.println(stringRedisTemplate.opsForHash().get("hash", "key1"));System.out.println(stringRedisTemplate.opsForHash().get("hash", "key2"));System.out.println(stringRedisTemplate.opsForHash().get("hash", "key3"));}//获取hash的所有key@Testvoid getHashKeys(){System.out.println(stringRedisTemplate.opsForHash().keys("hash"));}//获取hash的所有value@Testvoid getHashValues(){System.out.println(stringRedisTemplate.opsForHash().values("hash"));}//获取hash的所有entry@Testvoid getHashEntries(){System.out.println(stringRedisTemplate.opsForHash().entries("hash"));}//删除hash@Testvoid deleteHash(){stringRedisTemplate.opsForHash().delete("hash", "key1");System.out.println(stringRedisTemplate.opsForHash().get("hash", "key1"));}//判断hash中是否存在key@Testvoid hasKey(){System.out.println(stringRedisTemplate.opsForHash().hasKey("hash", "key1"));System.out.println(stringRedisTemplate.opsForHash().hasKey("hash", "key2"));System.out.println(stringRedisTemplate.opsForHash().hasKey("hash", "key3"));}

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

public class TestList {@Autowiredprivate StringRedisTemplate stringRedisTemplate;@Testpublic void setList(){//一次添加一个元素stringRedisTemplate.opsForList().leftPush("fruits", "pear");//一次添加多个元素stringRedisTemplate.opsForList().leftPushAll("fruits", "apple", "banana", "orange");//在头部添加元素stringRedisTemplate.opsForList().leftPush("fruits", "grape");//在尾部添加元素stringRedisTemplate.opsForList().rightPush("fruits", "watermelon");//获取列表长度System.out.println(stringRedisTemplate.opsForList().size("长度"+"fruits"));//获取列表中所有元素System.out.println(stringRedisTemplate.opsForList().range("fruits", 0, -1));//获取列表中指定位置的元素System.out.println(stringRedisTemplate.opsForList().index("fruits", 2));//删除列表中指定位置的元素,如果列表中有多个 "banana",只会删除第一个stringRedisTemplate.opsForList().remove("fruits", 1, "banana");//获取列表中指定元素的索引System.out.println(stringRedisTemplate.opsForList().indexOf("fruits", "orange"));}}

set
1.Redis 的 Set 是 String 类型的无序集合。集合成员是
唯一的,这就意味着集合中不能出现重复的数据
2.Redis 中集合是通过哈希表实现的,所以添加,删
除,查找的复杂度都是 O(1)。
在这里插入图片描述

@SpringBootTest
public class TestSet {@Autowiredprivate StringRedisTemplate stringRedisTemplate;@Testvoid setSet(){// 添加元素到set,可以添加多个元素,返回添加成功的个数stringRedisTemplate.opsForSet().add("students","张三","李四","王五");}@Testvoid getSet(){// 获取set中的所有元素Set<String> set = stringRedisTemplate.opsForSet().members("students");for (String s : set){System.out.println(s);}}@Testvoid removeSet(){// 从set中移除元素stringRedisTemplate.opsForSet().remove("students", "张三");}@Testvoid sizeSet(){// 获取set的大小Set<String> set = stringRedisTemplate.opsForSet().members("students");}@Testvoid containSet(){// 判断元素是否在set中boolean b = stringRedisTemplate.opsForSet().isMember("students", "张三");System.out.println(b);}}

zset
Redis有序集合和集合一样也是string类型元素的集合,且不允许重复的成员,它用来保存需要排序的数据,例如排行榜
在这里插入图片描述

@SpringBootTest
public class TestZset {@Autowiredprivate StringRedisTemplate stringRedisTemplate;//存值@Testvoid setZset() {stringRedisTemplate.opsForZSet().add("top", "a", 1);stringRedisTemplate.opsForZSet().add("top", "b", 3);stringRedisTemplate.opsForZSet().add("top", "c", 2);(stringRedisTemplate.opsForZSet().range("top", 0, -1)).forEach(System.out::println);}//取所有值@Testvoid getZset() {//正序System.out.println(stringRedisTemplate.opsForZSet().range("top", 0, -1));//倒序System.out.println(stringRedisTemplate.opsForZSet().reverseRange("top", 0, -1));}//获取前两个值,下标从1开始@Testvoid getZsetByScore() {System.out.println(stringRedisTemplate.opsForZSet().rangeByScore("top", 1, 2));}//获取排名第2的元素,下标从0开始@Testvoid getZsetByRank() {System.out.println(stringRedisTemplate.opsForZSet().reverseRank("top", "b"));}//获取值和权重@Testvoid getZsetByScoreWithScores() {//第一种方式System.out.println(stringRedisTemplate.opsForZSet().rangeWithScores("top", 0, -1));//第二种方式Cursor< ZSetOperations.TypedTuple<String>> scan = stringRedisTemplate.opsForZSet().scan("top", ScanOptions.NONE);while (scan.hasNext()) {ZSetOperations.TypedTuple<String> next = scan.next();System.out.println(next.getValue() + "----" + next.getScore());}}//删除值@Testvoid delZset() {stringRedisTemplate.opsForZSet().remove("top", "a");System.out.println(stringRedisTemplate.opsForZSet().range("top", 0, -1));}
}

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

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

相关文章

【Unity】Amplify Shader Editor

Amplify Shader Editor (ASE) Amplify Shader Editor&#xff0c;是一个功能强大的基于节点的着色器开发工具&#xff0c;允许开发者在 Unity 中轻松创建和管理复杂的 Shader。 主要功能和特点 基于节点的编辑器&#xff1a; • 提供直观的可视化界面&#xff0c;减少手写 Sh…

Elasticsearch使用(2):docker安装es、基础操作、mapping映射

1 安装es 1.1 拉取镜像 docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/elasticsearch:7.17.3 1.2 运行容器 运行elasticsearch容器&#xff0c;挂载的目录给更高的权限&#xff0c;否则可能会因为目录权限问题导致启动失败&#xff1a; docker r…

scroll-view 实现滑动显示,确保超出正常显示,小程序app,h5兼容

在uniapp 开开发的项目中&#xff0c;滑动操作是很多的 1.在插件市场使用了几款插件&#xff0c;但是都不太好用&#xff0c;要么是 显示的tab 过多&#xff0c;滑动到最后一个&#xff0c;当前显示那个跑左边显示不全&#xff0c;要么是滑动到最后一个后面的无法自动滑动&…

SpringBoot Maven快速上手

文章目录 一、Maven 1.1 Maven 简介&#xff1a;1.2 Maven 的核心功能&#xff1a; 1.2.1 项目构建&#xff1a;1.2.2 依赖管理&#xff1a; 1.3 Maven 仓库&#xff1a; 1.3.1 本地仓库&#xff1a;1.3.2 中央仓库&#xff1a;1.3.3 私服&#xff1a; 二、第一个 SpringBoot…

funcaptcha 验证码逆向协议通过,算法实现

声明 本文章中所有内容仅供学习交流&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01;

【C语言】浮点数的原理、整型如何转换成浮点数

众所周知C语言中浮点数占四个字节&#xff0c;无论在32位或者64位机器上。不免会发出疑问四个字节是怎么计算出小数的呢&#xff1f;其实物理存放还是按照整型存放的。 IEEE 754 单精度浮点数格式 浮点数在计算机中是使用 IEEE 754 标准进行表示的。在 IEEE 754 标准中&#…

善于运用指针--函数与指针

文章目录 前言一、函数的指针二、函数指针运用 1函数名地址2指针变量调用函数3指向函数的指针变量做函数参数二、返回指针值的函数总结 前言 如果在程序中定义了一个函数&#xff0c;在编译时会把函数的源代码转换为可执行代码并分配一段空间。这段空间有一个起始地址&#xf…

美图撕掉蔡文胜标签

卖掉比特币的美图不投机了。 作者|周立青 编辑|杨舟 12月5日&#xff0c;比特币突破10万美元大关&#xff0c;曾花费1亿美元购入虚拟货币的美图宣布已出售所有加密货币。 美图在港交所发布公告称&#xff0c;自2024年11月起&#xff0c;公司已开始出售其持有的加密货币&…

win11 恢复任务栏copilot图标, 亲测有效

1、修改C:\Windows\System32\IntegratedServicesRegionPolicySet.json&#xff0c;解除中国不能使用copilot的限制。 使用Notepad搜索copilot全文搜索&#xff0c;将下面两处的“CN,”删除&#xff0c;删除后如下&#xff1a; {"$comment": "Show Copilot on t…

鹦鹉的饮食偏好:探索多彩的食物世界

鹦鹉&#xff0c;作为聪明且迷人的鸟类&#xff0c;其饮食习性一直是鸟类爱好者关注的焦点。了解鹦鹉喜欢吃什么食物&#xff0c;对于确保它们的健康与幸福至关重要。 鹦鹉的食物种类丰富多样&#xff0c;首先是各类种子与谷物。例如&#xff0c;葵花籽富含脂肪和蛋白质&#…

番外篇 | YOLO-ELA:高效的局部注意力建模,用于高性能实时缺陷检测 !

前言:Hello大家好,我是小哥谈。现有的从无人机(UAV)上进行的绝缘子缺陷识别方法在处理复杂背景场景和小型物体时,准确率较低且存在较多的假阳性检测。为解决这一问题,本文提出了一种基于局部注意力建模的新注意力基础架构,即YOLO-ELA。在YOLOv8的一阶段架构的Neck部分添…

【密码学】SM4算法

一、 SM4算法简介 SM4算法是中国国家密码管理局于2012发布的一种分组密码算法&#xff0c;其官方名称为SMS4&#xff08;SMS4.0&#xff09;&#xff0c;相关标准为GM/T 0002-2012《SM4分组密码算法》。SM4算法的分组长度和密钥长度均为128比特,采用非平衡Feistel结构。采用32…

【实现多网卡电脑的网络连接共享】

电脑A配备有两张网卡&#xff0c;分别命名为eth0和eth1&#xff08;对于拥有超过两张网卡的情况&#xff0c;解决方案相似&#xff09;。其中&#xff0c;eth0网卡能够连接到Internet&#xff0c;而eth1网卡则通过网线直接与另一台电脑B相连&#xff08;在实际应用中&#xff0…

VBA API 概述 | 宏编程

注&#xff1a;本文为 “VBA API 概述 | 宏编程 | 执行速度慢” 相关文章合辑。 VBA API 详解 Office 二次开发于 2020-12-17 22:27:10 发布 Office 版本变动 在 Office 2010 之前&#xff0c;微软仅提供 32-bit 版本的 Office。而自 Office 2010 起&#xff0c;出现了 32-b…

科技潮头浪接天,一桥飞架两界连。EthernetIP转Profinet互译连

本案例介绍的是西门子1200PLC通过稳联技术PROFINET转EtherNetIP网关&#xff08;WL-ABC2006&#xff09;连接HCS-6100系统配置案例。 打开稳联技术Ethernetip转profient网关(WL-ABC2006)配置软件&#xff0c;因为网关作为EtherNetIP从站&#xff0c;所以选择PN2EIP。设置网关Pr…

EasyPlayer.js播放器如何在iOS上实现低延时直播?

随着流媒体技术的迅速发展&#xff0c;H5流媒体播放器已成为现代网络视频播放的重要工具。其中&#xff0c;EasyPlayer.js播放器作为一款功能强大的H5播放器&#xff0c;凭借其全面的协议支持、多种解码方式以及跨平台兼容性&#xff0c;赢得了广泛的关注和应用。 那么要在iOS上…

LeetCode - #158 用 Read4 读取 N 个字符 II

文章目录 摘要描述题目描述方法定义 题解答案题解代码题解代码分析示例测试及结果示例测试代码示例运行结果 时间复杂度空间复杂度总结关于我们 摘要 本文将详细解读一道与文件读取相关的编程问题&#xff1a;如何使用 read4 实现按需读取 n 个字符的 read 方法。我们不仅会提…

Navigaiton源码解析(二)—— costmap、全局规划算法

1 costmap概述 红点代表障碍物,蓝色点代表膨胀后的障碍物。红色的多边形表示机器人的footprint(足迹),用来做碰撞检查。机器人的footprint与红色的障碍物点不应该相交,footprint的中心不应该与蓝色点重合 costmap_2d包提供了一个机器人在其中导航的占据栅格地图。costmap接收…

Oracle EBS PAC 如何复修非标任务单生产生非常大的PAC成本?

系统环境 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 问题症状 非标准任务单组件和装配相同物料A,俗称投入A产A。该物料A的期初数量为0。 上期成本假设为20,而本期成本爆增至563.674234。关键问题点: 由于该物料没有期初数量,无法通过“更新定期成本”指定“新期本…

PHP:连接Grid++Report模板,实现循环打印

实现效果 模板 代码 cycle.php <html xmlns"http://www.w3.org/1999/xhtml"><head><title>Web报表(B/S报表)演示 - 不用报表插件展现报表而是直接输出</title><meta http-equiv"Content-Type" content"text/html; chars…