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

Redis基础学习

目录

Redis命令

通用命令

String

Key的顶层格式

Hash

List

​编辑​编辑Set

SortedSet

在IDEA使用Jedis操作Redis

常规使用

Jedis的连接池

SpringDataRedis 

手动序列化和反序列化

操作Hash 


Redis命令

通用命令

想知道某个命令怎么用

1.可以在官网学习用法

https://www.redis.net.cn/order/

2.  使用 help+命令

String

Key的顶层格式

Hash

List

Set

SortedSet

在IDEA使用Jedis操作Redis

常规使用

引入依赖

我的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.leo</groupId><artifactId>jedis-work</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>jedis-work</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><junit.jupiter.version>5.7.0</junit.jupiter.version></properties><dependencies><!--jedis--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version></dependency><!--单元测试--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.7.0</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.22.2</version><configuration><includes><include>**/*Test.java</include><include>**/*Tests.java</include></includes></configuration></plugin></plugins></build>
</project>

我的测试

package com.leo.test;import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import redis.clients.jedis.Jedis;
import org.junit.jupiter.api.Test;public class TestRedis {private Jedis jedis;@BeforeEachvoid setUp() {// 1.建立连接jedis = new Jedis("192.168.**.**", 6379);  //根据自己的ip// 2.设置密码jedis.auth("***");   自己的密码// 3.选择库jedis.select(0);}@Testvoid testString() {// 存入数据String result = jedis.set("name2", "大哥");System.out.println("result = " + result);// 获取数据String name = jedis.get("name2");System.out.println("name = " + name);}@AfterEachvoid tearDown() {if (jedis != null) {jedis.close();}}
}

Jedis的连接池

1.配置Jedis连接池工具类

package Utils;import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;public class JedisConnectionFactory {private static final JedisPool jedisPool;static {//配置连接池JedisPoolConfig poolConfig = new JedisPoolConfig();poolConfig.setMaxTotal(8);poolConfig.setMaxIdle(8);poolConfig.setMinIdle(0);poolConfig.setMaxWaitMillis(1000);//创建连接池对象jedisPool = new JedisPool(poolConfig,"192.168.88.134",6379,1000,"123321");}public static Jedis getJedis(){return jedisPool.getResource();}
}

建立连接使用工具类 

package com.leo.test;import Utils.JedisConnectionFactory;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import redis.clients.jedis.Jedis;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.JedisFactory;
import redis.clients.jedis.JedisPool;public class TestRedis {private Jedis jedis;@BeforeEachvoid setUp() {// 1.建立连接//  方式1// jedis = new Jedis("192.168.88.134", 6379);//  方式2jedis= JedisConnectionFactory.getJedis();// 2.设置密码jedis.auth("123321");// 3.选择库jedis.select(0);}@Testvoid testString() {// 存入数据String result = jedis.set("name3", "小弟");System.out.println("result = " + result);// 获取数据String name = jedis.get("name3");System.out.println("name = " + name);}@AfterEachvoid tearDown() {if (jedis != null) {jedis.close();}}
}

SpringDataRedis 

使用步骤

pom的代码

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.4.3</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.leo</groupId><artifactId>redis-demo</artifactId><version>0.0.1-SNAPSHOT</version><name>redis-demo</name><description>redis-demo</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>17</java.version></properties><dependencies><dependency>
<!--            redis依赖--><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency>
<!--            common pool--><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></path></annotationProcessorPaths></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

yaml文件

spring:data:redis: # Redis 数据源配置host: 192.168.**.**    # Redis服务器的IP地址或域名。port: 6379              # Redis服务监听的端口,默认是6379。password: **       # 访问Redis所需的密码。如果Redis未设置密码,请删除此行。lettuce: # Lettuce 是一个线程安全的Redis Java客户端,适用于高性能场景。pool: # Lettuce连接池配置max-active: 8       # 连接池中最大活跃连接数(同时可以使用的最大连接数),默认值是8。根据应用的并发量调整。max-idle: 8         # 连接池中的最大空闲连接数,建议与max-active保持一致以提高性能。min-idle: 0         # 连接池中的最小空闲连接数,生产环境中建议设为大于0的值,以减少创建新连接的开销。max-wait: 100ms     # 当连接池耗尽时,获取连接的最大等待时间。默认值是-1,表示无限等待。建议设置合理的超时时间。

测试类

package com.leo.redisdemo;import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;@SpringBootTest
class RedisDemoApplicationTests {@Autowiredprivate RedisTemplate redisTemplate;@Testvoid testString() {redisTemplate.opsForValue().set("name","james");Object name = redisTemplate.opsForValue().get("name");System.out.println(name);}}

但是发现,虽然存进去了,但不是我们想要的结果

由于Spring Data Redis默认使用了JdkSerializationRedisSerializer作为序列化器,它会将Java对象序列化为字节数组存储到Redis中。因此,当你在Redis客户端查看数据时,看到的是经过序列化的二进制数据,而不是原始的字符串值。

手动序列化和反序列化

本文采用方案二

引入依赖 

        <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency>

导入user类

package com.leo.pojo;import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private String name;private Integer age;
}

 测试类

package com.leo.redisdemo;import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.leo.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;@SpringBootTest
class RedisDemoApplicationTests {@Autowiredprivate StringRedisTemplate stringRedisTemplate;@Testvoid testString() {stringRedisTemplate.opsForValue().set("name","curry");Object name = stringRedisTemplate.opsForValue().get("name");System.out.println("name :"+name);}private static final ObjectMapper mapper = new ObjectMapper();@Testvoid testSaveUser() throws JsonProcessingException {// 创建对象User user = new User("james", 40);// 手动序列化\String json = mapper.writeValueAsString(user);// 写入数据stringRedisTemplate.opsForValue().set("user:200", json);// 获取数据String jsonUser = stringRedisTemplate.opsForValue().get("user:200");// 手动反序列化User u= mapper.readValue(jsonUser, User.class);System.out.println("user1 = " + u);}
}

操作Hash 

    @Testvoid testHash() {stringRedisTemplate.opsForHash().put("user:300", "name", "peter");stringRedisTemplate.opsForHash().put("user:300", "age", "20");Map<Object, Object> entries = stringRedisTemplate.opsForHash().entries("user:300");System.out.println("result is"+entries);}

都是通过  stringRedisTemplate  来选择操作的数据类型,再调用这个数据类型有的方法


http://www.mrgr.cn/news/91984.html

相关文章:

  • STM32-心知天气项目
  • nodejs:express + js-mdict 作为后端,vue 3 + vite 作为前端,在线查询英汉词典
  • 大模型WebUI:Gradio全解12——LangChain原理及其agent构建Gradio(1)
  • JDBC学习
  • 【c语言】函数_作业详解
  • 嵌入式八股文(四)计算机网络篇
  • LTO优化详解
  • FFMPEG编码容错处理解决办法之途径----升级库文件
  • 类与对象(4)
  • 探索YOLO技术:目标检测的高效解决方案
  • windows的CMD命令提示符
  • 政安晨【零基础玩转各类开源AI项目】DeepSeek 多模态大模型Janus-Pro-7B,本地部署!支持图像识别和图像生成
  • ubuntu新系统使用指南
  • 1.vue使用vite构建初始化项目
  • java开发——为什么要使用动态代理?
  • Codes 开源免费研发项目管理平台 2025年第一个大版本3.0.0 版本发布及创新的轻IPD实现
  • 目标检测数据集-水果腐烂新鲜度检测数据集(适用YOLO全系列)
  • OpenHarmony构建系统-GN与子系统、部件、模块理论与实践
  • (新)01前缀和来临!优点多多!
  • 贪心算法