redis基础学习

2024-01-09 16:43:27

redis可视化界面下载

https://github.com/lework/RedisDesktopManager-Windows/releases

redis数据类型

string、hash、List、Set、SortedSet
在这里插入图片描述

key的结构

在这里插入图片描述

127.0.0.1:6379> set heima:user:1 '{"id":1,"name":"Jack","age":18}'
OK
127.0.0.1:6379> set heima:user:2 '{"id":1,"name":"Rose","age":18}'
OK
127.0.0.1:6379> set heima:product:1 '{"id":1,"name":"honor6"}'
OK

在这里插入图片描述

hash类型的操作

在这里插入图片描述

127.0.0.1:6379> HSET heima:user:3 name Lucy
(integer) 1
127.0.0.1:6379> HGET heima:user:3 name
"Lucy"
127.0.0.1:6379> HMSET heima:user:4 name HanMeiMei age 20 sex man
OK

在这里插入图片描述

push类型的操作

在这里插入图片描述

127.0.0.1:6379> LPUSH users 1 2 3
(integer) 3
127.0.0.1:6379> RPUSH users 4 5 6
(integer) 6

在这里插入图片描述

set类型

127.0.0.1:6379> sadd s1 a b c
(integer) 3
127.0.0.1:6379> SMEMBERS s1
1) "c"
2) "b"
3) "a"

在这里插入图片描述

SortedSet

127.0.0.1:6379> zadd stus 85 Jack 89 Lucy 82 Miles
(integer) 3

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Java Redis初使用

在这里插入图片描述

spring:
  data:
    redis:
      host: localhost
      port: 6379
      password:
      lettuce:
        pool:
          max-active: 8
          max-idle: 8
          min-idle: 0
          max-wait: 100

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

在这里插入图片描述

序列化方式

在这里插入图片描述
RedisTemplate 的两种序列化方式

  1. 自定义 RedisTemplate 进行序列化
  2. 使用 StringRedisTemplate 进行序列化

第一种

@Configuration
public class RedisConfig {
  @Bean
  public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
      // 创建 RedisTemplate 对象
      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;
  }
}

在这里插入图片描述

第二种(推荐,但是需要手动序列化)
为了节省内存空间,通常并不会使用 JSON 序列化器来处理 value,而是统一使用 String 序列化器,要求只能存储 String 类型的 key 和 value,当需要存储 Java 对象时,手动完成对象的序列化和反序列化。
Spring 默认提供了一个 StringRedisTemplate 类,它的 key 和 value 的序列化方式默认就是 String 方式。省去了自定义 RedisTemplate 的过程。
1、首先,注入 StringRedisTemplate 类

@Test
void testString() {
	 // 写入一条 String 数据
	 stringRedisTemplate.opsForValue().set("name", "华仔仔");
	 // 获取 String 数据
	 Object name = stringRedisTemplate.opsForValue().get("name");
	 System.out.println("name = " + name);
}

2、编写测试

    @PostConstruct
    private void test2() throws JsonProcessingException {
        User user = new User("lst", 25);
        //手动序列化
        String json = mapper.writeValueAsString(user);
        //写入一条数据到redis
        redisTemplate.opsForValue().set("user:200", json);
        //读取数据
        String val = redisTemplate.opsForValue().get("user:200");
        //手动反序列化
        User user1 = mapper.readValue(val, User.class);
        System.out.println("user1=" +user1);
    }

在这里插入图片描述

SpringRedisTemplate操作hash类型

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_43914278/article/details/135479762
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。