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

Redis相关知识

  1. yum安装redis
    使用以下命令:直接将redis安装到Linux服务器(Xshell)中
    yum -y install redis
  2. 启动redis

    使用以下命令,以后台运行方式启动redis

    redis-server /etc/redis.conf &
  3. 操作redis

    使用以下命令启动redis客户端

    redis-cli

    具体可操作如下:

    redis-cli:打开客户端

    set testname zhangsan:存放一个key

    get testname:读取一个key

  4. 设置远程连接

    a.将redis配置文件下载到本地;redis配置文件是linux下的/etc/redis.conf

    b.将redis.conf中的“bin 127.0.0.1”注释掉

    c.将redis.conf中的“protected-mode yes"改为:“protected-mode no"

    d.将修饰后的redis.conf上传至linux下 的/etc目录

    e.使用命令”redis-cli shutdown“先关闭redis服务;在使用”redis-server /etc/redis.conf &“开启redis服务

    f.云服务防火墙或安全策略里面开放redis端口6379

redis有五大基础数据类型:

String字符串类型(使用较多)
Hash字典类型
List列表类型
Set集合类型
Zset有序集合类型

1.String:字符串类型(使用较多)

简单动态字符串,它是从键值对key-value的形式存储的,根据key来存储和获取value值,它的使用相对来说比较简单,但是在实际项目中应用非常广泛:

使用如下:

set k1 v1:添加数据

get k1:查询数据

strlen k1:查询字符串的长度

可以使用ex参数来设置字符串的过期时间

set k1 v1 ex 1000 :设置1000s后过期(删除)

字符串的常见使用场景:

  1. 存放用户登录信息
  2. 存放文章详情和列表信息
  3. 存放和累计网页的统计信息
  4. …………………………

2.Hash:字典类型

字典类型又被称为散列类型或者是哈希表类型,它是将一个键值(key)和一个特殊的“哈希表”关联起来,这个“哈希表”包含两列数据:字段和值,他就相当于Java中的Map<String , Map<String , String>>结构。

假如我们使用字典类型来存储一篇文章的详情信息,存储结构如下:

同理,我们也可以使用字典类型来存储用户信息,并且字典类型来存储此类信息就无需手动序列化和反序列化数据了,所以使用起来更加的方便和高校。

字典类型的使用如下:

hset myhash key1 value1:添加数据

hset myhash key1:查询数据

字典类型的查询数据只能一个一个的查询,不能一次全部查询完!!

通常情况下,字典类类型会使用数组的方式来存储相关的数据,但发生哈希冲突时,才会使用链表的结构来存储数据。

添加多个数据:hmset myhset age "16" sex "男"

查询:hget myhset age

           hget myhset sex

3.List:列表类型

列表类型是一个使用链表结构存储的有序结构,它的元素插入会按照先后顺序存储到链表结构中,因此,它的元素操作(插入删除实时间复杂度为O(1)),所以相对来说速度还是比较块的,但它的查询时间复杂度为O(n),因此查询可能会比较慢。

列表类型使用如下:

lpush list 1 2 3:添加数据

lpop list :获取并删除列表的第一个元素

列表的典型使用场景可以有以下两个:

  1. 消息队列:列表类型可以使用rpush实现先进先出的功能,同时又可以使用lpop轻松的弹出(查询并删除)第一个元素,所以列表类型可以用来实现消息队列。
  2. 文查列表:对于博客站点来说,用户和文字都越来越多时,为了加快程序的响应速度,我们可以把用户的文字存入到list中,因为List是有序的结构,所以这样又可以完美的实现分页功能,从而加速了程序的相应速度。

4.Set:集合类型

Set:集合类型是一个无序并唯一的键值集合

集合类型使用场景如下:

sadd myset v1 v2 v3 :添加数据

smembers myset :查询集合中的所有数据

集合类型的经典使用场景如下:

  1. 微博关注我的人和我关注的人都适合用集合存储,可以保证人员不会重复
  2. 中奖人信息也适合用集合类型存储,这样可以保证一个人不会重复中奖

集合类型(Set)和列表类型(List)的区别如下:

  1. 列表可以存储重复元素,集合只能存储非重复元素
  2. 列表是按照元素的先后顺序存储元素的,而集合是无序方式存储元素的

5.Zset:有序集合类型

有序集合类型相比于集合类型多了一个排序属性score(分值),对于有序集合Zset来说,每个存储元素相当于两个值组成的,一个是有序结合的元素值,一个属排序值,有序集合的存储元素值也是不能重复的,但分值是可以重复的。

当我们把学生的成绩存储在有序集合中,它的存储结构如下所示:

有序集合类型的使用如下:

zadd zset1 3 golong 4 sql 1 redis:添加数据

zrange zset 0 -1 :查询所有数据

有序集合的经典使用场景如下:

  1. 学生成绩排名
  2. 粉丝列表,根据关注的先后时间排序

Spring Boot集成Redis的详细教程:

首先,我们需要创建一个Spring Boot项目。可以使用IDEA或者Eclipse等工具创建,也可以直接在命令行中使用Spring Initializr来创建。这里我们以IDEA为例,步骤如下:

  1. 打开IntelliJ IDEA,点击"Create New Project"。
  2. 选择"Spring Initializr",点击"Next"。
  3. 填写项目的基本信息,如Group、Artifact、Name等,点击"Next"。
  4. 选择需要的依赖,这里我们需要添加"Web"和"Redis"的依赖,点击"Next"。
  5. 确认项目的设置,点击"Finish",等待项目创建完成。

三、添加Redis依赖

在项目的pom.xml文件中,添加Spring Boot对Redis的支持。代码如下:

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

四、配置Redis

在application.properties文件中,配置Redis的相关信息。代码如下:

spring.redis.host=localhost
spring.redis.port=6379

五、创建Redis配置类

在项目中创建一个配置类,用于配置RedisTemplate。代码如下:

@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(factory);return template;}
}

六、使用RedisTemplate操作Redis

在需要操作Redis的地方,注入RedisTemplate,然后使用其提供的方法进行操作。代码如下:

@Service
public class UserService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;// ...其他方法...
}

七、测试Redis操作

为了测试Redis的操作,我们可以在UserService中添加一个方法,用于向Redis中添加和获取用户信息。代码如下:

@Service
public class UserService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;// ...其他方法...public void addUser(String key, User user) {redisTemplate.opsForValue().set(key, user);}public User getUser(String key) {return (User) redisTemplate.opsForValue().get(key);}
}

八、启动Spring Boot应用并测试Redis操作

启动Spring Boot应用后,我们可以使用Postman或者浏览器等工具,调用UserService的addUser和getUser方法,测试Redis的操作。如果一切正常,我们应该可以看到用户信息被正确地添加到Redis中,并且可以通过key获取到用户信息。

至此,我们已经成功地在Spring Boot项目中集成了Redis,并且可以正常使用RedisTemplate进行操作。在实际开发中,我们还可以使用Spring Data Redis提供的Repository接口,更方便地进行CRUD操作。同时,我们还可以使用Redis的发布/订阅功能,实现消息的广播和接收。

相关文章:

Redis相关知识

yum安装redis 使用以下命令&#xff1a;直接将redis安装到Linux服务器&#xff08;Xshell&#xff09;中 yum -y install redis 启动redis 使用以下命令&#xff0c;以后台运行方式启动redis redis-server /etc/redis.conf & 操作redis 使用以下命令启动redis客户端 redis-…...

数据管理系统-week10-自由访问控制

文章目录 前言一、用户管理用户管理语句介绍二、数据库管理三、特权(重点考点)Administrative (global) privileges数据库特权表权限列权限四、角色参考文献前言 这节课主要讲了用户管理数据库的具体语句,数据库特权当中的全局特权,数据库特权,表特权与列特权的使用与注意…...

Python遥感开发之批量拼接

Python遥感开发之批量拼接 1 遥感图像无交错的批量拼接2 遥感图像有交错的批量拼接 前言&#xff1a;主要借助python实现遥感影像的批量拼接&#xff0c;遥感影像的批量拼接主要分为两种情况&#xff0c;一种是遥感图像无交错&#xff0c;另一种情况是遥感图像相互有交错。具体…...

【bat】批处理脚本大全

目录 1.概述 2.变量 3.运算符 3.2.重定向运算符 3.3.多命名运算符 3.4.管道运算符 4.命令 4.1.基本命令 4.2.参数传递 4.3.查看脚本内容 4.4.注释 4.5.日期和时间 4.6.启动脚本 4.7.调用其他bat 4.8.任务管理 4.8.1.任务列表查看 4.8.2.任务终止 4.9.文件夹 …...

java设计模式学习之【单例模式】

文章目录 引言单例模式简介定义与用途实现方式&#xff1a;饿汉式懒汉式 UML 使用场景优势与劣势单例模式在spring中的应用饿汉式实现懒汉式实现数据库连接示例代码地址 引言 单例模式是一种常用的设计模式&#xff0c;用于确保在一个程序中一个类只有一个实例&#xff0c;并且…...

UWB高精度定位系统项目源码

在现代社会中&#xff0c;精准定位技术对于各行各业都至关重要。为了满足对高精度定位的需求&#xff0c;超宽带&#xff08;Ultra-Wideband, UWB&#xff09;技术应运而生。UWB高精度定位系统以其出色的定位精度和多样化的应用领域而备受关注。本文将深入探讨UWB高精度定位系统…...

WPF Live Charts2 自学笔记

文章目录 前言实现效果微软平台的历史问题 WPF 项目搭建Nuget添加额外框架添加项目初始化livecharts配置其它LiveCharts2 案例简单案例Demo示例ViewViewModel GPU渲染 Github地址仓库 前言 LiveChart 是C# 上面很受欢迎的统计图 UI控件。最近在学WPFhalcon开发&#xff0c;想想…...

大小堆的实现(C语言)

目录 前言 一种完全二叉树&#xff1a;堆 堆的概念 堆的性质 建堆的时间复杂度 建堆的空间复杂度&#xff1a; 小堆的实现 必要补充 堆的初始化 堆的销毁 向上调整算法 堆的插入 向下调整算法 堆的删除 获取堆顶元素 获取堆中元素个数 堆的判空 最终代码 He…...

Linux系统之centos7编译安装Python 3.8

前言 CentOS (Community Enterprise Operating System) 是一种基于 Red Hat Enterprise Linux (RHEL) 进行源代码再编译并免费提供给用户的 Linux 操作系统。 CentOS 7 采用了最新的技术和软件包&#xff0c;并提供了强大的功能和稳定性。它适用于各种服务器和工作站应用场景&a…...

Lambda表达式与方法引用

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 引子 先来看一个案例 …...

二维数组处理(一)

输入整型二维数组a&#xff08;5行5列&#xff09;&#xff0c;完成如下要求&#xff1a; 输出二维数组a。 将a的第2行和第4行元素对调后&#xff0c;形成新的二维数组a并按行输出&#xff0c;每个元素之间隔一个空格。(行号从0开始计算)。 用对角线&#xff08;指二维数组左…...

基于JNI实现调用C++ SDK

基于JNI实现调用C SDK 背景分析解决实践 背景 上篇文章总结了几种Java项目调用C/C SDK项目方法&#xff0c;在逐一实践、踩坑后&#xff0c;最终还是敲定采用 JNI 方式进行实现。在文章开始的过程&#xff0c;会先大概讲讲笔者遇到的情况&#xff0c;因为封装方式需要根据实际…...

计算机组成原理笔记——存储器(静态RAM和动态RAM的区别,动态RAM的刷新, ROM……)

■ 随机存取存储器 ■ 1.随机存取存储器&#xff1a;按存储信息的原理不同分为&#xff1a;静态RAM和动态RAM 2.静态RAM&#xff08;SRAM&#xff09;&#xff1a;用触发器工作原理存储信息&#xff0c;但电源掉电时&#xff0c;存储信息会丢失具有易失性。 3.存储器的基本单元…...

企业计算机服务器locked1勒索病毒数据恢复,locked1勒索病毒解密流程

随着计算机技术的不断发展&#xff0c;越来越多的企业走向数字化办公时代&#xff0c;计算机技术为企业的生产运营提供了有利条件&#xff0c;但也为企业带来了网络安全威胁。在本月&#xff0c;云天数据恢复中心陆续接到很多企业的求助&#xff0c;企业的速达办公软件遭到了lo…...

Session 与 JWT 的对决:谁是身份验证的王者? (下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

论文笔记:Confidential Assets

Confidential Assets 描述了一种称为“保密交易”的方案&#xff0c;该方案模糊了所有UTXO的金额&#xff0c;同时保持了不创建或销毁硬币的公共可验证性。进一步将此方案扩展到“保密资产”&#xff0c;一种单一的基于区块链的分类帐可以跟踪多种资产类型的方案。将保密交易扩…...

Docker下搭建MySQL主从复制

目录 主从复制简介 主从复制搭建 主从复制简介 主从复制&#xff0c;是用来建立一个和主数据库完全一样的数据库环境&#xff0c;称为从数据库&#xff1b;主数 据库一般是准实时的业务数据库。 主从复制的作用 做数据的热备。作为后备数据库&#xff0c;主数据库服务器故…...

VBA数据库解决方案第七讲:如何利用Recordset对象打开数据库的数据记录集

《VBA数据库解决方案》教程&#xff08;版权10090845&#xff09;是我推出的第二套教程&#xff0c;目前已经是第二版修订了。这套教程定位于中级&#xff0c;是学完字典后的另一个专题讲解。数据库是数据处理的利器&#xff0c;教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法…...

内部培训平台的系统 PlayEdu搭建私有化内部培训平台

PlayEdu是由白书科技团队多年经营的线上教育系统&#xff0c;专为企业提供的全新企业培训方案 我们的目标是为更多的企业机构搭建私有化内部培训平台&#xff0c;以满足不断增长的培训需求 通过PlayEdu&#xff0c;企业可以有效地组织和管理培训资源&#xff0c;提供高质量的…...

Elasticsearch 相似度评分模型介绍

前言 Elasticsearch 是基于 Lucene 的世界范围内最流行的全文检索框架&#xff0c;其文档相似度算法包含 TF/IDF 和 BM25&#xff0c;从 ES 5.0开始 BM25 算法已经成为 ES 默认的相似度评分模块。 TF-IDF 与 BM25 的区别 TF-IDF 和 BM25 都是计算文本相似性的常用算法。TF-ID…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...