Redis数据类型, 在springboot中集成Redis

1.Redis数据类型

  • string(字符串)
  • hash(哈希)
  • list(列表)
  • set(集合 )
  • zset(sorted set:有序集合)

可安装可视化的Redis管理工具

在这里插入图片描述

连接之后,刷新一下;即可看到数据信息

在这里插入图片描述

String类型

  • 最基础的键值对形式
  • string 类型是二进制形式。可以包含任何数据。力图图片或序列化的对象。
  • string 类型是 Redis 最基本的数据类型,这个类型的值最大能存储512MB。

案例操作
在这里插入图片描述

在这里插入图片描述

Hash类型

  • 键值(key=>value)对集合。
  • string 类型的 field 和 value 的映射表,hash类型 适用于存储对象。
  • 存储字符串和字符串值之间的映射,例如存储单个用户的姓名、年龄…

案例操作

在这里插入图片描述

在这里插入图片描述

List(列表类型)

  • 简单的字符串列表,按照插入顺序排序。可添加一个元素到列表的头部(左边)或者尾部(右边).

  • 列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储 40 多亿)

案例
在这里插入图片描述

在这里插入图片描述

Set(无序集合)

  • 集合是使用哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
  • 添加一个 string 元素到 key 对应的 set 集合中后,若成功则返回 1,如果元素已经在集合中返回 0。
  • 由于集合内元素的唯一性,第二次插入的元素将被忽略。
  • 最大的成员数为 232 - 1 个 (4294967295, 每个集合可存储 40多亿个成员)。

案例,这里我把grade1添加了两次,第二次的就被忽略了;
在这里插入图片描述

可看到它不是有序的;

在这里插入图片描述

在这里插入图片描述

zset(sorted set:有序集合)

  • zset集合中; 每个元素都会关联一个 double 类型的分数。通过分数来为集合中的成员进行从小到大的排序。

  • zset 的成员唯一,但分数(score)可以重复。

  • 添加元素到集合,元素在集合中存在,更新对应分数值 score

案例

在这里插入图片描述

有序

在这里插入图片描述


2.可设置失效时间

对于一些缓存,验证码等数据,可在一定时间内自动的被销毁。
对 key设置过期时间,在 key 过期之后被自动删除
不设置失效时间的话,默认为-1

在设置存储数组时直接配置时间

EX 表示以秒为单位
PX 表示以毫秒为单位 EX,PX 不区分大小写
set name jim EX 30 设置失效时间为 30 秒
ttl 键 查看剩余时间()
pttl 键 查看剩余时间(毫秒)

需要对已经存入的数据设置失效时间时

expire 键 时间()
pexpire 键 时间(毫秒)

例如这个当时没有设置失效时间,默认就是 -1;
在这里插入图片描述

在这里插入图片描述

这时的数据库中已经没有这个键了

在这里插入图片描述


3.在springboot中集成Redis

首先在pom.xml文件中导入依赖

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

可使用这个“RedisTemplate类

ValueOperations:简单 K-V 操作
SetOperations:set 类型数据操作
ZSetOperations:zset 类型数据操作
HashOperations:针对 map 类型的数据操作
ListOperations:针对 list 类型的数据操作

application.yml中进行配置

spring:
	redis:
	     host: 链接的Ip
	     port: 6379
	     password: redis密码
	     database: 0
	     pool:
	      max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
	      max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
	      max-idle: 8 # 连接池中的最大空闲连接
	      min-idle: 0 # 连接池中的最小空闲连接
	      timeout: 5000ms # 连接超时时间(毫秒)

序列化配置类

package com.xiaozhi.backserver.startspringboot.config;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
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.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisConfig {

    /**
     * 序列化键,值
     * @param connectionFactory
     * @return
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(connectionFactory);
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
        StringRedisSerializer redisSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(redisSerializer);
        redisTemplate.setHashKeySerializer(redisSerializer);
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
        return redisTemplate;
    }
}

在测试类中使用

@SpringBootTest
class StartspringbootApplicationTests {
	//自动装配;
	@Autowired
	RedisTemplate redisTemplate;

	@Test
	void  contextLoads() {
		ValueOperations valueOperations = redisTemplate.opsForValue();
		//序列化为json格式;
		valueOperations.set("role",new Role(12,"小智","从零开始的异世界生活",new Date()));
       //可设置失效时间;
       //redisTemplate.opsForValue().set("users", users,10*1000, TimeUnit.MILLISECONDS);
	}
}	

存储成功

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小智RE0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值