Redis 入门指南

news2024/9/20 15:01:49

Redis 入门指南

目录

Redis 入门指南

Redis 基本概念

Redis 常用命令

字符串String操作命令:

哈希Hash操作命令:

 列表list操作命令

 集合set操作命令:

有序集合sorted set 操作命令

通用命令

在Java中操作 Redis

1.Jedis

2.Spring Data Redis

总结


 其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符串、数值、甚至json:

Redis(Remote Dictionary Server)是一个开源的内存数据存储系统,也被称为数据结构服务器。它提供了一个键值存储数据库,并支持多种数据结构,例如字符串、哈希、列表、集合和有序集合等。本文将介绍Redis的基本概念、常用命令以及如何在Java中操作Redis。

Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件

官网:https://redis.io

下载地址

Windows版下载地址:https://github.com/microsoftarchive/redis/releases

Linux版下载地址:https://download.redis.io/releases/

 [root@localhost local]# tar -zxvf redis-4.0.0.tar.gz 

Redis 基本概念

键值对

Redis是以键值对的形式存储数据的。每个键都是唯一的,并且可以关联多种不同类型的值。键和值都可以是字符串,但值也可以是其他数据结构,如哈希、列表、集合和有序集合。

数据结构

Redis支持多种数据结构,包括:

  • 字符串(string):存储字符串值。
  • 哈希(hash):存储键值对的散列。
  • 列表(list):按插入顺序存储的字符串元素列表。
  • 集合(set):无序、独立且不重复的字符串元素的集合。
  • 有序集合(sorted set):与集合类似,但每个元素都关联一个分数,使其可以按分数进行排序。

持久化

Redis可以将数据持久化到磁盘,以便在重启后恢复数据。它提供了两种持久化方式:快照(snapshotting)和日志(append-only file)。

Redis 常用命令

以下是Redis的一些常用命令:

字符串String操作命令:

  • SET key value:设置键值对。
  • GET key:获取键对应的值。
  • SETEX key [seconds] value: 设置指定key的值,并将key的过期时间设为senconds秒
  • SETNX key value:只有在key不存在时设置key的值
  • DEL key:删除键值对。

哈希Hash操作命令:

                

  • HSET key field value:在哈希表key中设置字段field的值设为value。
  • HGET key field :获取存储在哈希表中指定字段的值。
  • HDEL key field :删除存储在哈希表中的指定字段

  • HKEYS key :获取哈希表中所有字段(field区)

  • HVALS key :获取哈希表中所有值(value区)

  • HGETALL key :获取在哈希表中指定key的所有字段和值

 列表list操作命令

集合成员是不唯一的,可重复

              

  • LPUSH key value:将值插入列表的左侧。
  • RPUSH key value:将值插入列表的右侧。
  • LPOP key:从列表的左侧弹出值。
  • RPOP key :从列表的右侧弹出值。
  • LLEN key : 获取列表长度
  • BRPOP key1 [key2] timeout : 移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

                  

lrange mylist 0 -1,其中,lrange 是 Redis 的命令之一,用于获取指定 List 中指定范围的元素。mylist 是 List 的名称,0 表示起始索引,-1 表示结束索引。在 Redis 中,List 的索引从 0 开始,正数表示从左到右的索引,负数表示从右到左的索引。所以lrange mylist 0 -1 表示获取 List mylist 中从第一个元素到最后一个元素的范围。

 集合set操作命令:

集合成员是唯一的,无序的 

         

  • SADD key member:向集合中添加成员。
  • SMEMBERS key :获取集合中的所有成员。
  • SCARD key : 获取集合的成员数
  • SINTER key1 [key2] :返回给定所有集合的交集
  • SUNION key1 [key2] : 返回给定所有集合的并集
  • SDIFF key1 [key2]  :返回给定所有集合的差集  key1-key2
  • SREM key member1 [member2] : 移除集合中的一个或多个成员

有序集合sorted set 操作命令

  • 更多命令可以参考Redis中文网:https://www.redis.net.cn

通用命令

  • KEYS pattern: 查找所有符合给定模式(pattern)的key
  • EXISTS key : 检查给定key是否存在
  • TYPE key : 返回key所存储的值的类型
  • TTL key : 返回给定key的剩余生存时间(TTL,time to live) ,以秒为单位
  • DEL key : 该命令用于在key存在是删除key

在Java中操作 Redis

在Java中操作Redis,有以下三种常用的库:Jedis、Lettuce和Redisson。

1.Jedis

导入maven依赖

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.6.0</version>
</dependency>

要在Java中操作Redis,我们可以使用Jedis客户端库。以下是一个简单的Java代码示例,展示了如何连接到Redis服务器并执行一些基本操作:

import redis.clients.jedis.Jedis;
public class JedisExample {
    public static void main(String[] args) {
        //1. 创建Jedis实例,指定Redis服务器的主机和端口
        Jedis jedis = new Jedis("localhost", 6379);
        
        // 连接Redis服务器
        jedis.connect();
        
        // 执行操作...
        jedis.set("username","ziyoujian");
        
        String value = jedis.get("username");
        System.out.println(value);
        // 关闭连接
        jedis.close();
    }
}

执行操作:通过Jedis实例,可以执行各种Redis的操作,如字符串操作、列表操作、集合操作、哈希操作和有序集合操作。

以下是一些基本操作的示例:

  • 字符串操作:
// 存储字符串
jedis.set("key", "value");
// 获取字符串
String value = jedis.get("key");
  • 列表操作:
    // 添加元素到列表的开头
    jedis.lpush("list", "value1", "value2");
    // 获取列表范围内的元素
    List<String> values = jedis.lrange("list", 0, -1);
  • 集合操作:
    // 添加元素到集合
    jedis.sadd("set", "value1", "value2");
    // 获取集合中的所有元素
    Set<String> values = jedis.smembers("set");
  • 哈希操作:
    // 存储哈希的字段和值
    jedis.hset("hash", "field1", "value1");
    // 获取哈希字段的值
    String value = jedis.hget("hash", "field1");
  • 有序集合操作:
    // 添加带有分数的元素到有序集合
    jedis.zadd("sortedSet", 1.0, "value1");
    jedis.zadd("sortedSet", 2.0, "value2");
    // 获取有序集合范围内的元素
    Set<String> values = jedis.zrange("sortedSet", 0, -1);

    需要根据具体的业务需求选择合适的操作。 以上是使用Jedis操作Redis的入门步骤和示例。你可以根据自己的需求和具体情况进行进一步学习和实践。

2.Spring Data Redis

1.导入Spring Data Redis库:首先,需要在你的Java项目中导入Spring Data Redis库。你可以使用构建工具如Maven或Gradle,在项目的pom.xml文件中添加以下依赖:

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

 2. 配置Redis连接信息:在Spring Boot项目中,你可以在application.propertiesapplication.yml文件中配置Redis的连接信息。示例配置如下

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

 下面是一个在单元测试中使用Spring Data Redis的示例:当你在使用RedisTemplate时,可以通过指定泛型来避免显式设置序列化器。默认情况下,Spring Data Redis会根据指定的泛型自动选择合适的序列化器。

@SpringBootTest
public class RedisExampleTest {
    @Autowired
    private RedisTemplate<String, String> redisTemplate;
    @Test
    public void testRedisOperations() {
        // 存储字符串
        redisTemplate.opsForValue().set("key", "value");
        // 获取字符串
        String value = redisTemplate.opsForValue().get("key");
        assertEquals("value", value);
    }
}

在这个示例中,我们使用了@SpringBootTest注解来启动Spring Boot应用程序的上下文。通过@Autowired注解,我们将RedisTemplate注入到测试类中。 在testRedisOperations()方法中,我们进行了两个操作:

  • 使用opsForValue().set()方法将键值对存储到Redis中。
  • 使用opsForValue().get()方法从Redis中获取存储的值,并使用assertEquals()方法进行断言验证。 你可以根据需要在单元测试中执行其他Redis操作,如列表、集合、哈希和有序集合的操作,以及其他自定义操作。 请确保在单元测试之前已经正确配置了Redis连接信息,如在application.propertiesapplication.yml配置文件中添加了合适的Redis连接配置。 这个示例可以帮助你了解如何在单元测试中使用Spring Data Redis进行操作,并验证结果是否符合预期。你可以根据需要扩展和修改这个示例来适应你的具体需求。

以下是一些基本操作的示例:

  • 字符串操作:
// 存储字符串
redisTemplate.opsForValue().set("key", "value");
// 获取字符串
String value = redisTemplate.opsForValue().get("key");
  • 列表操作
    // 添加元素到列表的尾部
    redisTemplate.opsForList().rightPush("list", "value1");
    redisTemplate.opsForList().rightPush("list", "value2");
    // 获取列表范围内的元素
    List<String> values = redisTemplate.opsForList().range("list", 0, -1);
  • 集合操作:
    // 添加元素到集合
    redisTemplate.opsForSet().add("set", "value1", "value2");
    // 获取集合中的所有元素
    Set<String> values = redisTemplate.opsForSet().members("set");
  • 哈希操作:
    // 存储哈希的字段和值
    redisTemplate.opsForHash().put("hash", "field1", "value1");
    // 获取哈希字段的值
    String value = (String) redisTemplate.opsForHash().get("hash", "field1");
  • 有序集合操作:
    // 添加带有分数的元素到有序集合
    redisTemplate.opsForZSet().add("sortedSet", "value1", 1.0);
    redisTemplate.opsForZSet().add("sortedSet", "value2", 2.0);
    // 获取有序集合范围内的元素
    Set<String> values = redisTemplate.opsForZSet().range("sortedSet", 0, -1);

总结

我们可以使用Java来执行各种Redis操作,包括设置和获取键值对、操作哈希、列表、集合和有序集合等。 这就是关于Redis的入门指南,介绍了基本概念、常用命令以及在Java中操作Redis的示例。希望对你理解和使用Redis有所帮助!

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

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

相关文章

windows后台窗口启动jar包

启动命令 chcp 65001 //切换utf-8 echo off start javaw -jar test-1.0-SNAPSHOT.jar --spring.profiles.activeprod echo 启动成功&#xff0c;按任意键结束 pause exit查看后台进程命令 wmic process where caption"javaw.exe" get processid,caption,commandli…

手机里的视频怎么转换成MP4格式?简单的转换方法分享

MP4格式是一种广泛使用的视频格式&#xff0c;几乎所有设备和操作系统都支持MP4格式的视频播放。无论是使用 iPhone、iPad、安卓手机、电视等各种设备&#xff0c;都可以播放 MP4 格式的视频。这种广泛的兼容性使得 MP4 成为一种非常方便的视频格式&#xff0c;我们可以随时随地…

IDEA自动生成实体类

操作流程 第一次需要配置Generate POJOs.groovy 新建该文件 Generate POJOs.groovy import com.intellij.database.model.DasTable import com.intellij.database.model.ObjectKind import com.intellij.database.util.Case import com.intellij.database.util.DasUtil import…

嵌入式面试刷题(day1)

文章目录 前言一、由for( ; ;)引出的一系列问题二、sizeof和strlen的误区三、字符串转义字符带来的问题四、结构体概念模糊五、&#xff01;和~概念分不清六、switch case误区七、短路运算八、复合赋值运算符带来的问题九、什么是左值什么是右值十、struct和union总结 前言 最…

cuda sample-asyncAPI(01)

C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.0\0_Simple\asyncAPI 这个例子说明了CUDA事件在GPU计时和CPU与GPU重叠执行方面的应用。 事件被插入到CUDA的调用流中。 由于CUDA流调用是异步的&#xff0c;CPU可以在GPU执行时进行计算&#xff08;包括主机和设备之间的DM…

【前端系列】前端如何使用websocket发送消息

序言 今天来学习一下前端如何使用websocket发送消息 1 基础介绍 1.1 什么是WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议&#xff0c;它可以让客户端和服务器之间进行实时的双向通信。与传统的 HTTP 请求不同&#xff0c;WebSocket 使用了一个长连接&…

Django实现简单的音乐播放器 1

使用django框架开发一个简单的音乐播放器。 效果&#xff1a; 目录 环境准备 安装django 创建项目 创建应用 注册应用 配置数据库 设置数据库配置 设置pymysql库引用 创建数据库 创建数据表 生成表迁移文件 执行表迁移 配置时区 配置语言 配置子应用路由 在pla…

外部中断实验(stm32)

目录 EXIT的相关代码exit.cexit.h LED的相关代码KEY的相关代码BEEP的相关代码main.cGPIO 跟中断线的映射关系图 说明&#xff1a;以下内容参考正点原子资料 EXIT的相关代码 exit.c void EXTIX_Init(void) { EXTI_InitTypeDef EXTI_InitStructure;NVIC_InitTypeDef NVIC_InitS…

el-dialog中,el-form中表单信息未收集齐全时禁用提交按钮,动态控制按钮是否禁用

需求 在el-dialog中放置了一个表单&#xff0c;打开el-dialog时&#xff0c;表单没有收集内容&#xff0c;各项为空&#xff0c;此时表单的提交按钮被禁用&#xff0c;只有每个表单项都收集到内容时&#xff0c;才会将提交按钮设置为可用 预期效果 解决方案 <el-button c…

多线程进阶学习(高并发、线程池、使用场景)

文章目录 1、线程基础知识1.1、线程和进程线程和进程的区别&#xff1f; 1.2、并行与并发并行与并发有什么区别&#xff1f; 1.3、线程的创建方式创建线程的方式有哪些&#xff1f;刚才你说过&#xff0c;使用runnable和callable都可以创建线程&#xff0c;它们有什么区别呢&am…

OpenCV读取一张8位无符号三通道图像并显示

#include <iostream> #include <opencv2/imgcodecs.hpp> #include <opencv2/opencv.hpp> #include

Kafka生产者概述

【Kafka】Kafka生产者概述 文章目录 【Kafka】Kafka生产者概述1. 生产者1.1 生产者消息发送流程1.1.1 发送原理1.1.2 生产者重要参数列表 1.2 异步发送 API1.2.1 普通异步发送1.2.2 带回调函数的异步发送 1. 生产者 1.1 生产者消息发送流程 1.1.1 发送原理 在消息发送过程中…

企业数字化转型成功的标准是什么?

​近几年来&#xff0c;数字化转型一直是企业管理者的热议话题&#xff0c;那么&#xff0c;到底该以什么标准来衡量转型成效&#xff0c;又如何向管理者交出一份满意的答卷呢&#xff1f; 为了确保转型效果与目标的一致性&#xff0c;在规划数字化转型之初&#xff0c;选择正…

JVM — JDK11垃圾回收器 ZGC

1. ZGC介绍 ZGC&#xff08;The Z Garbage Collector&#xff09;是 JDK 11 中推出的一款低延迟垃圾回收器&#xff0c;为实现以下几个目标而诞生的垃圾回收器&#xff0c;停顿时间不超过 10ms&#xff0c;停顿时间不会因堆变大而变长&#xff0c;支持 8MB~4TB 级别的堆&#…

【专题速递】MD-VQA、AB实验、音视频质量建设以及在手机上的应用

// 怎样才能更好地进行QoE优化&#xff1f;音视频技术在用户侧的挑战又是什么&#xff1f;7月29日LiveVideoStackCon上海站QoE与数据驱动专场&#xff0c;为您解答。 QoE与数据驱动 在音视频应用里&#xff0c;获得了大量的用户上报数据&#xff0c;包括但不限于音视频质量数…

ASM汇编语言环境安装

以前是学习过8位单片机的&#xff0c;忘记的差不多了。现在需要使用64位的汇编语言&#xff0c;准备重新学习。 64位的编程环境使用ebe&#xff0c;sf上有的下载&#xff1a; 这个软件不错&#xff0c;可以调试64位的汇编语言&#xff0c;寄存器也可以实时查看。 32位的编程开…

pcl经典算法60例——(1)打开并显示点云,窗口PCLVisualizer嵌入MFC的picture control

一、搭建MFC框架 1、环境说明 本教程为vs2022&#xff0c;pcl1.12.1版本&#xff0c;其他版本自己进行适当修改&#xff0c;仅供参考。 2、方法步骤 (1)新建项目&#xff0c;选择“基于对话框”&#xff0c;然后点击“下一步” 二、配置pcl环境 关于配置环境&#xff0c;网…

centos安装常见软件

安装git # 方式一&#xff1a;yum install git -y# 方式二&#xff1a;&#xff08;开发会用的软件&#xff09;yum -y groupinstall "Development tools"# 执行下面这条yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel…

点云实战及Python路径实验

点云实战 文章目录 点云实战python 有关路径实验下一级目录上一级目录 学习PointNet论文&#xff08;https://arxiv.org/abs/1612.00593&#xff09;并实践 python .\show_seg.py --dataset ../data/shapenet --model .\seg\seg_model_Chair_2.pth python 有关路径实验 下一级…

kotlin Flow系列之 - 冷流SafefFlow源码解析之 - Safe在那里?

本文涉及源码基于kotlinx-coroutines-core-jvm:1.7.1 kotlin 协成系列文章: 你真的了解kotlin中协程的suspendCoroutine原理吗? Kotlin Channel系列&#xff08;一&#xff09;之读懂Channel每一行源码 kotlin Flow系列之-SharedFlow源码解析 kotlin Flow系列之-StateFlow源码…