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简单示例

引入依赖:

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

代码示例:

package com.example.redisdemo;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import redis.clients.jedis.Jedis;

import java.util.Map;

@SpringBootTest
class RedisDemoApplicationTests {

    private Jedis jedis;

   @BeforeEach
    void setUp(){
       jedis = new Jedis("localhost",6379);
//密码
//       jedis.auth("123");
       jedis.select(0);
   }

   @Test
    void testString(){
       String result  = jedis.set("name","张四");
       System.out.println("result="+result);

       String name = jedis.get("name");
       System.out.println("name="+name);
   }

   @Test
   void testHash(){
       jedis.hset("user:1","name","Jack");
       jedis.hset("user:1","age","21");

       Map<String,String> map = jedis.hgetAll("user:1");

       System.out.println(map);
   }

   @AfterEach
    void tearDown(){
       if(jedis !=null){
           jedis.close();
       }
   }

}

(2)Jedis连接池

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

package com.example.redisdemo.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.setMaxIdle(0);
        poolConfig.setMaxWaitMillis(1000);

        jedisPool = new JedisPool(poolConfig,"192.168.92.136",6379,1000,"123456");
    }

    public static Jedis getJedis(){
        return jedisPool.getResource();
    }
}

在test中进行测试:

package com.example.redisdemo;

import com.example.redisdemo.utils.JedisConnectionFactory;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import redis.clients.jedis.Jedis;

import java.util.Map;

@SpringBootTest
class RedisDemoApplicationTests {

    private Jedis jedis;

   @BeforeEach
    void setUp(){
//       jedis = new Jedis("192.168.92.136",6379);
       jedis = JedisConnectionFactory.getJedis();
       jedis.auth("123456");
       jedis.select(0);
   }

   @Test
    void testString(){
       String result  = jedis.set("name","张四");
       System.out.println("result="+result);

       String name = jedis.get("name");
       System.out.println("name="+name);
   }

   @Test
   void testHash(){
       jedis.hset("user:1","name","Jack");
       jedis.hset("user:1","age","21");

       Map<String,String> map = jedis.hgetAll("user:1");

       System.out.println(map);
   }

   @AfterEach
    void tearDown(){
       if(jedis !=null){
           jedis.close();
       }
   }

}

三、SpringDataRedis

 (1)快速入门实例:

1.引入依赖

        <!--        Redis依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
<!--        连接池依赖-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

 2.在application.yml中进行配置

server:
  port: 8080

spring:
  redis:
    host: 192.168.92.136
    port: 6379
    password: 123456
    lettuce:
      pool:
        max-active: 8 #最大连接
        max-idle: 8 #最大空闲连接
        min-idle: 0 #最小空闲连接
        max-wait: 100 #连接等待时间

3.Test中编写示例

package com.example.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 {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    void testString(){
        redisTemplate.opsForValue().set("name","小龙");
        Object name = redisTemplate.opsForValue().get("name");
        System.out.println("name="+name);
    }

}

(2)RedisTemplate序列化

配置序列化 config.RedisConfig

package com.example.redisdemo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;

@Configuration
public class RedisConfig {

   @Bean
    public  RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory connectionFactory){

       RedisTemplate<String,Object> template = new RedisTemplate<>();
       //设置连接工厂
       template.setConnectionFactory(connectionFactory);
       //创建Json序列化工具
       GenericJackson2JsonRedisSerializer jsonRedisSerializer =new GenericJackson2JsonRedisSerializer();
       //设置Key的序列化
       template.setKeySerializer(RedisSerializer.string());
       template.setHashKeySerializer(RedisSerializer.string());
       //设置Value的序列化
       template.setValueSerializer(jsonRedisSerializer);
       template.setHashValueSerializer(jsonRedisSerializer);

       return template;
   }

}

创建实体 pojo.User

package com.example.redisdemo.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String name;
    private Integer age;
}

在Test中编写测试用例

package com.example.redisdemo;

import com.example.redisdemo.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;

@SpringBootTest
class RedisDemoApplicationTests {

    @Autowired
    private RedisTemplate<String,Object> redisTemplate;

    @Test
    void testString(){
        redisTemplate.opsForValue().set("name","小龙");
        Object name = redisTemplate.opsForValue().get("name");
        System.out.println("name="+name);
    }

    @Test
    void testSaveUser(){
        redisTemplate.opsForValue().set("user:100",new User("小虎",21));
        User user = (User) redisTemplate.opsForValue().get("user:100");
        System.out.println("user="+user);
    }


}

报错可能没有引入Jackson依赖

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

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

示例代码:

package com.example.redisdemo;

import com.example.redisdemo.pojo.User;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
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;

import java.util.Map;

@SpringBootTest
class RedisDemoApplicationTests {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    //Json工具
    private static final ObjectMapper mapper = new ObjectMapper();

    @Test
    void testStringTemplate() throws JsonProcessingException{
        User user = new User("小明",20);
        //手动序列化
        String json = mapper.writeValueAsString(user);

        stringRedisTemplate.opsForValue().set("user:200",json);

        String val = stringRedisTemplate.opsForValue().get("user:200");
        //反序列化
        User user1 = mapper.readValue(val, User.class);
        System.out.println("user1:"+user1);
    }

    @Test
    void testHash(){
        stringRedisTemplate.opsForHash().put("user:400","name","小胡");
        stringRedisTemplate.opsForHash().put("user:400","age","21");
        
        Map<Object,Object> entries = stringRedisTemplate.opsForHash().entries("user:400");
        System.out.println("entries:"+entries);
    }

}

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Redis 是一个开源的内存数据库,以其高性能和灵活的数据结构而闻名。《Redis 入门到精通》是一本介绍 Redis 使用和深入学习的书籍,适合有一定编程基础的开发者或对数据库有一定了解的人士。 这本书从介绍 Redis 的概述和安装入手,帮助读者了解 Redis 的基本概念和使用方法。接着,书中详细介绍了 Redis 中常用的数据结构,如字符串、列表、哈希、集合和有序集合,并提供了示例代码和运用场景,让读者能够深入理解这些数据结构的使用和特点。 此外,书中还介绍了 Redis 的高级特性和应用,如发布-订阅模式、事务、持久化、复制等。这些内容帮助读者进一步了解 Redis 的技术原理和性能优势,帮助开发者更好地应用 Redis 解决实际问题。 《Redis 入门到精通》还包括了性能优化、监控和故障处理等实用的内容,读者可以学习如何配置和优化 Redis 以提升系统性能,并学习如何排查和解决常见故障。 总体而言,《Redis 入门到精通》是一本全面介绍和学习 Redis 的实用书籍,通过深入浅出的讲解和实例,帮助读者从入门到精通 Redis,并能够灵活运用 Redis 解决实际问题。无论是想要了解 Redis基础知识还是深入学习 Redis 的高级特性,都可以从这本书中获得帮助和指导。 ### 回答2: Redis(Remote Dictionary Server)是一个开源的、基于键值对的存储系统。它以其高性能、易使用和丰富的功能而备受推崇。《Redis入门到精通》PDF是一本针对Redis的学习资料,从入门到深入掌握Redis的各个方面进行了详细介绍。 这本书首先介绍了Redis的基本概念和原理,包括键值对存储、数据类型、持久化等核心概念。然后,它深入讲解了Redis的各种高级功能,如发布订阅、事务、Lua脚本等。此外,书中还包含了丰富的示例代码和实际应用场景,帮助读者更好地理解和应用Redis。 《Redis入门到精通》PDF适合各个层次的读者。对于初学者,它提供了系统全面的入门指导,从安装配置开始,一步步引导读者熟悉和掌握Redis的使用。对于有一定经验的开发者,它提供了高级特性和实战案例,让读者深入了解Redis的内部机制和最佳实践。 此外,这本书还介绍了Redis的性能调优和集群部署等内容,帮助读者在实际应用中充分发挥Redis的潜力。无论是Web应用的缓存、消息队列还是实时数据分析,Redis都应该是开发者的首选。 总之,《Redis入门到精通》PDF是一本权威而实用的Redis学习资料,通过系统而全面的介绍,帮助读者从入门到精通Redis,更好地应用Redis解决实际问题。无论是初学者还是有经验的开发者,都可以从中获益匪浅。 ### 回答3: 《Redis 入门到精通》是一本介绍 Redis 数据库的权威指南。Redis 是一种高性能、可扩展的键值存储系统,常用于缓存、消息队列、实时统计和分布式会话管理等领域。 该书从 Redis基础概念入手,包括安装配置、数据结构、持久化、集群部署等内容,帮助读者快速上手 Redis。接着介绍了 Redis 的高级功能,例如发布订阅、事务、Lua 脚本编写、并发控制等,让读者深入了解 Redis 的各种用法和技巧。 《Redis 入门到精通》还涵盖了 Redis 在实际应用中的最佳实践,包括如何优化性能、如何设计和实现分布式系统等。此外,书中还介绍了常见的 Redis 开源工具和框架,如 Redisson、Spring Data Redis 等,帮助读者更好地利用 Redis 构建高效的应用程序。 该书内容丰富、结构清晰,适合初学者和有一定经验的开发人员。无论是想快速上手 Redis,还是想深入学习 Redis 的高级用法,本书都能提供详细的指导和实例演示。 总之,通过阅读《Redis 入门到精通》这本书,读者可以系统地学习和掌握 Redis 数据库的各个方面,从入门到精通。无论是作为开发人员、DBA 还是系统架构师,都能在实际工作中充分发挥 Redis 强大的功能和性能优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值