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

Spring Data Redis:在Java中操作Redis

目录

一、Spring Data Redis使用方式

1.1 介绍       

1.2 配置 

1.3 RedisTemplate

二、环境搭建 

2.1 导入Spring Data Redis的maven坐标

2.2 配置Redis数据源  

2.3 编写配置类,创建RedisTemplate对象  

三、操作常见类型数据

3.1 操作字符串类型数据

3.2 操作哈希类型数据  

3.3 操作列表类型数据

3.4 操作集合类型数据

3.5 操作有序集合类型数据

3.6 通用命令操作


一、Spring Data Redis使用方式

1.1 介绍       

Spring Data Redis 是 Spring 的一部分,提供了在 Spring 应用中通过简单的配置就可以访问 Redis 服务,对 Redis 底层开发包进行了高度封装。在 Spring 项目中,可以使用Spring Data Redis来简化 Redis 操作。

网址:Spring Data Redis

1.2 配置 

Spring Boot提供了对应的Starter,maven坐标:

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

1.3 RedisTemplate

Spring Data Redis中提供了一个高度封装的类:RedisTemplate,对相关api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下:

  • ValueOperations:string数据操作

  • SetOperations:set类型数据操作

  • ZSetOperations:zset类型数据操作

  • HashOperations:hash类型的数据操作

  • ListOperations:list类型的数据操作

二、环境搭建 

2.1 导入Spring Data Redis的maven坐标

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

2.2 配置Redis数据源  

在application-dev.yml中添加:

sky:
  redis:
    host: localhost
    port: 6379
    password: 123456
    database: 10

解释说明:

database:指定使用Redis的哪个数据库,Redis服务启动后默认有16个数据库,编号分别是从0到15。

可以通过修改Redis配置文件来指定数据库的数量。

在application.yml中添加读取application-dev.yml中的相关Redis配置

spring:
  profiles:
    active: dev
  redis:
    host: ${sky.redis.host}
    port: ${sky.redis.port}
    password: ${sky.redis.password}
    database: ${sky.redis.database} 

2.3 编写配置类,创建RedisTemplate对象  

package com.sky.config;import lombok.extern.slf4j.Slf4j;
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.StringRedisSerializer;@Configuration
@Slf4j
public class RedisConfiguration {@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){log.info("开始创建redis模板对象...");RedisTemplate redisTemplate = new RedisTemplate();//设置redis的连接工厂对象redisTemplate.setConnectionFactory(redisConnectionFactory);//设置redis key的序列化器redisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;}
}

解释说明:

当前配置类不是必须的,因为 Spring Boot 框架会自动装配 RedisTemplate 对象,但是默认的key序列化器为

JdkSerializationRedisSerializer,导致我们存到Redis中后的数据和原始数据有差别,故设置为

StringRedisSerializer序列化器。

三、操作常见类型数据

3.1 操作字符串类型数据

	/*** 操作字符串类型的数据*/@Testpublic void testString(){// set get setex setnxredisTemplate.opsForValue().set("name","小明");String city = (String) redisTemplate.opsForValue().get("name");System.out.println(city);redisTemplate.opsForValue().set("code","1234",3, TimeUnit.MINUTES);redisTemplate.opsForValue().setIfAbsent("lock","1");redisTemplate.opsForValue().setIfAbsent("lock","2");}

3.2 操作哈希类型数据  

/*** 操作哈希类型的数据*/@Testpublic void testHash(){//hset hget hdel hkeys hvalsHashOperations hashOperations = redisTemplate.opsForHash();hashOperations.put("100","name","tom");hashOperations.put("100","age","20");String name = (String) hashOperations.get("100", "name");System.out.println(name);Set keys = hashOperations.keys("100");System.out.println(keys);List values = hashOperations.values("100");System.out.println(values);hashOperations.delete("100","age");}

 3.3 操作列表类型数据

	/*** 操作列表类型的数据*/@Testpublic void testList(){//lpush lrange rpop llenListOperations listOperations = redisTemplate.opsForList();listOperations.leftPushAll("mylist","a","b","c");listOperations.leftPush("mylist","d");List mylist = listOperations.range("mylist", 0, -1);System.out.println(mylist);listOperations.rightPop("mylist");Long size = listOperations.size("mylist");System.out.println(size);}

3.4 操作集合类型数据

	/*** 操作集合类型的数据*/@Testpublic void testSet(){//sadd smembers scard sinter sunion sremSetOperations setOperations = redisTemplate.opsForSet();setOperations.add("set1","a","b","c","d");setOperations.add("set2","a","b","x","y");Set members = setOperations.members("set1");System.out.println(members);Long size = setOperations.size("set1");System.out.println(size);Set intersect = setOperations.intersect("set1", "set2");System.out.println(intersect);Set union = setOperations.union("set1", "set2");System.out.println(union);setOperations.remove("set1","a","b");}

3.5 操作有序集合类型数据

	/*** 操作有序集合类型的数据*/@Testpublic void testZset(){//zadd zrange zincrby zremZSetOperations zSetOperations = redisTemplate.opsForZSet();zSetOperations.add("zset1","a",10);zSetOperations.add("zset1","b",12);zSetOperations.add("zset1","c",9);Set zset1 = zSetOperations.range("zset1", 0, -1);System.out.println(zset1);zSetOperations.incrementScore("zset1","c",10);zSetOperations.remove("zset1","a","b");}

3.6 通用命令操作

	/*** 通用命令操作*/@Testpublic void testCommon(){//keys exists type delSet keys = redisTemplate.keys("*");System.out.println(keys);Boolean name = redisTemplate.hasKey("name");Boolean set1 = redisTemplate.hasKey("set1");for (Object key : keys) {DataType type = redisTemplate.type(key);System.out.println(type.name());}redisTemplate.delete("mylist");}

http://www.lryc.cn/news/116236.html

相关文章:

  • Android 面试重点之Framework (Handler篇)
  • 基于Node.js的后台管理系统的数据表格导出下载
  • 渗透攻击方法:原型链污染
  • 第四章 kernel函数基础篇
  • JVM:运行时数据区域(白话文)
  • Go语言并发编程(千锋教育)
  • CSS革命:用Sass/SCSS引领前端创新
  • MAPPO 算法的深度解析与应用和实现
  • API接口的涉及思路以及部分代码
  • Stable Diffusion无需代码连接QQ邮箱的方法
  • Excel表格(一)
  • 详细介绍渗透测试与漏洞扫描
  • Scikit-learn聚类方法代码批注及相关练习
  • C#程序的启动显示方案(无窗口进程发送消息) - 开源研究系列文章
  • java泛型和通配符的使用
  • 【网络】自定义协议 | 序列化和反序列化 | 以tcpServer为例
  • 06-3_Qt 5.9 C++开发指南_多窗体应用程序的设计(主要的窗体类及其用途;窗体类重要特性设置;多窗口应用程序设计)
  • (力扣)用两个栈实现队列
  • 【自动化测试框架】关于unitttest你需要知道的事
  • 手机便签中可以打勾的圆圈或小方块怎么弄?
  • 【Linux】gdb 的使用
  • C++11之右值引用
  • 【PHP的设计模式】
  • React 之 Redux - 状态管理
  • 集合转数组
  • 使用Python将Word文档转换为PDF的方法
  • Java 判断一个字符串在另一个字符串中出现的次数
  • 设计模式十三:代理(Proxy Pattern)
  • Redis基础 (三十八)
  • maven中的scope