• Redis入门到实战教程(基础篇)笔记


    教学来源: 

    Redis课程介绍导学_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1cr4y1671t?p=1一、Redis 入门

    1.认识NoSQL

    2.Redis在虚拟机中的安装和开机自启

    Redis在虚拟机中安装和配置开机自启-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_69183322/article/details/138168301

    3.Redis的数据结构

    4.Redis的基本类型

    (1) 字符串String类型

    (2)哈希Hash类型

    (3) 列表List类型

    (4)集合Set类型

    (5)有序集合类型

    二、Redis的Java客户端Jedis

    (1)Jedis简单示例

    引入依赖:

    1. <dependency>
    2. <groupId>redis.clients</groupId>
    3. <artifactId>jedis</artifactId>
    4. <version>3.7.0</version>
    5. </dependency>

    代码示例:

    1. package com.example.redisdemo;
    2. import org.junit.jupiter.api.AfterEach;
    3. import org.junit.jupiter.api.BeforeEach;
    4. import org.junit.jupiter.api.Test;
    5. import org.springframework.boot.test.context.SpringBootTest;
    6. import redis.clients.jedis.Jedis;
    7. import java.util.Map;
    8. @SpringBootTest
    9. class RedisDemoApplicationTests {
    10. private Jedis jedis;
    11. @BeforeEach
    12. void setUp(){
    13. jedis = new Jedis("localhost",6379);
    14. //密码
    15. // jedis.auth("123");
    16. jedis.select(0);
    17. }
    18. @Test
    19. void testString(){
    20. String result = jedis.set("name","张四");
    21. System.out.println("result="+result);
    22. String name = jedis.get("name");
    23. System.out.println("name="+name);
    24. }
    25. @Test
    26. void testHash(){
    27. jedis.hset("user:1","name","Jack");
    28. jedis.hset("user:1","age","21");
    29. Map<String,String> map = jedis.hgetAll("user:1");
    30. System.out.println(map);
    31. }
    32. @AfterEach
    33. void tearDown(){
    34. if(jedis !=null){
    35. jedis.close();
    36. }
    37. }
    38. }

    (2)Jedis连接池

    在utils中写Jedis连接池的配置:

    1. package com.example.redisdemo.utils;
    2. import redis.clients.jedis.Jedis;
    3. import redis.clients.jedis.JedisPool;
    4. import redis.clients.jedis.JedisPoolConfig;
    5. public class JedisConnectionFactory {
    6. private static final JedisPool jedisPool;
    7. static {
    8. JedisPoolConfig poolConfig = new JedisPoolConfig();
    9. poolConfig.setMaxTotal(8);
    10. poolConfig.setMaxIdle(8);
    11. poolConfig.setMaxIdle(0);
    12. poolConfig.setMaxWaitMillis(1000);
    13. jedisPool = new JedisPool(poolConfig,"192.168.92.136",6379,1000,"123456");
    14. }
    15. public static Jedis getJedis(){
    16. return jedisPool.getResource();
    17. }
    18. }

    在test中进行测试:

    1. package com.example.redisdemo;
    2. import com.example.redisdemo.utils.JedisConnectionFactory;
    3. import org.junit.jupiter.api.AfterEach;
    4. import org.junit.jupiter.api.BeforeEach;
    5. import org.junit.jupiter.api.Test;
    6. import org.springframework.boot.test.context.SpringBootTest;
    7. import redis.clients.jedis.Jedis;
    8. import java.util.Map;
    9. @SpringBootTest
    10. class RedisDemoApplicationTests {
    11. private Jedis jedis;
    12. @BeforeEach
    13. void setUp(){
    14. // jedis = new Jedis("192.168.92.136",6379);
    15. jedis = JedisConnectionFactory.getJedis();
    16. jedis.auth("123456");
    17. jedis.select(0);
    18. }
    19. @Test
    20. void testString(){
    21. String result = jedis.set("name","张四");
    22. System.out.println("result="+result);
    23. String name = jedis.get("name");
    24. System.out.println("name="+name);
    25. }
    26. @Test
    27. void testHash(){
    28. jedis.hset("user:1","name","Jack");
    29. jedis.hset("user:1","age","21");
    30. Map<String,String> map = jedis.hgetAll("user:1");
    31. System.out.println(map);
    32. }
    33. @AfterEach
    34. void tearDown(){
    35. if(jedis !=null){
    36. jedis.close();
    37. }
    38. }
    39. }

    三、SpringDataRedis

     (1)快速入门实例:

    1.引入依赖

    1. <!-- Redis依赖-->
    2. <dependency>
    3. <groupId>org.springframework.boot</groupId>
    4. <artifactId>spring-boot-starter-data-redis</artifactId>
    5. </dependency>
    6. <!-- 连接池依赖-->
    7. <dependency>
    8. <groupId>org.apache.commons</groupId>
    9. <artifactId>commons-pool2</artifactId>
    10. </dependency>

     2.在application.yml中进行配置

    1. server:
    2. port: 8080
    3. spring:
    4. redis:
    5. host: 192.168.92.136
    6. port: 6379
    7. password: 123456
    8. lettuce:
    9. pool:
    10. max-active: 8 #最大连接
    11. max-idle: 8 #最大空闲连接
    12. min-idle: 0 #最小空闲连接
    13. max-wait: 100 #连接等待时间

    3.Test中编写示例

    1. package com.example.redisdemo;
    2. import org.junit.jupiter.api.Test;
    3. import org.springframework.beans.factory.annotation.Autowired;
    4. import org.springframework.boot.test.context.SpringBootTest;
    5. import org.springframework.data.redis.core.RedisTemplate;
    6. @SpringBootTest
    7. class RedisDemoApplicationTests {
    8. @Autowired
    9. private RedisTemplate redisTemplate;
    10. @Test
    11. void testString(){
    12. redisTemplate.opsForValue().set("name","小龙");
    13. Object name = redisTemplate.opsForValue().get("name");
    14. System.out.println("name="+name);
    15. }
    16. }

    (2)RedisTemplate序列化

    配置序列化 config.RedisConfig

    1. package com.example.redisdemo.config;
    2. import org.springframework.context.annotation.Bean;
    3. import org.springframework.context.annotation.Configuration;
    4. import org.springframework.data.redis.connection.RedisConnectionFactory;
    5. import org.springframework.data.redis.core.RedisTemplate;
    6. import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
    7. import org.springframework.data.redis.serializer.RedisSerializer;
    8. @Configuration
    9. public class RedisConfig {
    10. @Bean
    11. public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory connectionFactory){
    12. RedisTemplate<String,Object> template = new RedisTemplate<>();
    13. //设置连接工厂
    14. template.setConnectionFactory(connectionFactory);
    15. //创建Json序列化工具
    16. GenericJackson2JsonRedisSerializer jsonRedisSerializer =new GenericJackson2JsonRedisSerializer();
    17. //设置Key的序列化
    18. template.setKeySerializer(RedisSerializer.string());
    19. template.setHashKeySerializer(RedisSerializer.string());
    20. //设置Value的序列化
    21. template.setValueSerializer(jsonRedisSerializer);
    22. template.setHashValueSerializer(jsonRedisSerializer);
    23. return template;
    24. }
    25. }

    创建实体 pojo.User

    1. package com.example.redisdemo.pojo;
    2. import lombok.AllArgsConstructor;
    3. import lombok.Data;
    4. import lombok.NoArgsConstructor;
    5. @Data
    6. @AllArgsConstructor
    7. @NoArgsConstructor
    8. public class User {
    9. private String name;
    10. private Integer age;
    11. }

    在Test中编写测试用例

    1. package com.example.redisdemo;
    2. import com.example.redisdemo.pojo.User;
    3. import org.junit.jupiter.api.Test;
    4. import org.springframework.beans.factory.annotation.Autowired;
    5. import org.springframework.boot.test.context.SpringBootTest;
    6. import org.springframework.data.redis.core.RedisTemplate;
    7. @SpringBootTest
    8. class RedisDemoApplicationTests {
    9. @Autowired
    10. private RedisTemplate<String,Object> redisTemplate;
    11. @Test
    12. void testString(){
    13. redisTemplate.opsForValue().set("name","小龙");
    14. Object name = redisTemplate.opsForValue().get("name");
    15. System.out.println("name="+name);
    16. }
    17. @Test
    18. void testSaveUser(){
    19. redisTemplate.opsForValue().set("user:100",new User("小虎",21));
    20. User user = (User) redisTemplate.opsForValue().get("user:100");
    21. System.out.println("user="+user);
    22. }
    23. }

    报错可能没有引入Jackson依赖

    1. <dependency>
    2. <groupId>com.fasterxml.jackson.core</groupId>
    3. <artifactId>jackson-databind</artifactId>
    4. </dependency>

    (3)序列化的另一种方式StringRedisTemplate

    示例代码:

    1. package com.example.redisdemo;
    2. import com.example.redisdemo.pojo.User;
    3. import com.fasterxml.jackson.core.JsonProcessingException;
    4. import com.fasterxml.jackson.databind.ObjectMapper;
    5. import org.junit.jupiter.api.Test;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.boot.test.context.SpringBootTest;
    8. import org.springframework.data.redis.core.RedisTemplate;
    9. import org.springframework.data.redis.core.StringRedisTemplate;
    10. import java.util.Map;
    11. @SpringBootTest
    12. class RedisDemoApplicationTests {
    13. @Autowired
    14. private StringRedisTemplate stringRedisTemplate;
    15. //Json工具
    16. private static final ObjectMapper mapper = new ObjectMapper();
    17. @Test
    18. void testStringTemplate() throws JsonProcessingException{
    19. User user = new User("小明",20);
    20. //手动序列化
    21. String json = mapper.writeValueAsString(user);
    22. stringRedisTemplate.opsForValue().set("user:200",json);
    23. String val = stringRedisTemplate.opsForValue().get("user:200");
    24. //反序列化
    25. User user1 = mapper.readValue(val, User.class);
    26. System.out.println("user1:"+user1);
    27. }
    28. @Test
    29. void testHash(){
    30. stringRedisTemplate.opsForHash().put("user:400","name","小胡");
    31. stringRedisTemplate.opsForHash().put("user:400","age","21");
    32. Map<Object,Object> entries = stringRedisTemplate.opsForHash().entries("user:400");
    33. System.out.println("entries:"+entries);
    34. }
    35. }

  • 相关阅读:
    STM32 寄存器配置笔记——GPIO配置输出
    TypeScript由浅到深
    历时2月,动态线程池 DynamicTp 发布里程碑版本 V1.0.8
    整理Meta GDC 2024 上关于XR、空间计算相关的分享
    使用Scrcpy投屏
    C++17结构化绑定
    webpack 优化
    MPI简谈
    SpringBoot3集成ElasticSearch
    324. 摆动排序 II : 不简单的构造题
  • 原文地址:https://blog.csdn.net/qq_69183322/article/details/138044903