文章目录
前言
提示:这里可以添加本文要记录的大概内容:
本人目前写的所有文章都是基于springboot项目中可能用到的框架技术,如有需要,可在专栏中寻找。
提示:以下是本篇文章正文内容,下面案例可供参考
一、关于Redis
Redis是一款基于内存使用了类似K-V结构来实现缓存数据的NoSQL非关系型数据库。
提示:Redis本身也会做数据持久化处理。
二、Redis的简单操作
Redis安装链接: https://pan.baidu.com/s/1V9MBzjfXmDyTRdAc8rf7Nw 提取码: 8y3l 当已经安装Redis,并确保环境变量可用后,可以在命令提示符窗口(CMD)或终端(IDEA的Terminal,或MacOS/Linux的命令窗口)中执行相关命令。
另外,推荐安装Redis Desktop Manager软件,可随时查看redis缓存中数据,安装链接: https://pan.baidu.com/s/1b8Nof3K6LGIvwBfqmS_8LQ 提取码: t1y0
在终端下,可以通过redis-cli
登录Redis客户端:
redis-cli
在Redis客户端中,可以通过ping
检测Redis是否正常工作,将得到PONG
的反馈:
ping
在Redis客户端中,可以通过set
命令向Redis中存入或修改简单类型的数据:
set name jack
在Redis客户端中,可以通过get
命令从Redis中取出简单类型的数据:
get name
如果使用的Key并不存在,使用
get
命令时,得到的结果将是(nil)
,等效于Java中的null
在Redis客户端中,可以通过keys
命令检索Key:
keys *
keys a*
注意:默认情况下,Redis是单线程的,keys
命令会执行整个Redis的检索,所以,执行时间可能较长,可能导致阻塞!
三、在Spring Boot项目中读写Redis
首先,需要添加spring-boot-starter-data-redis
依赖项:
<!-- Spring Data Redis:读写Redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
以上依赖项默认会连接localhost:6379
,并且无用户名、无密码,所以,当你的Redis符合此配置,则不需要在application.properties
/ application.yml
中添加任何配置就可以直接编程。如果需要显式的配置,各配置项的属性名分别为:
spring.redis.host
spring.redis.port
spring.redis.username
spring.redis.password
在使用以上依赖项实现Redis编程时,需要使用到的工具类型为RedisTemplate
,调用此类的对象的方法,即可实现读写Redis中的数据。
在使用之前,应该先在配置类中使用@Bean
方法创建RedisTemplate
,并实现对RedisTemplate
的基础配置,则在项目的根包下创建config.RedisConfiguration
类:
package cn.tedu.csmall.product.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.RedisSerializer;
import java.io.Serializable;
/**
* Redis的配置类
*
* @author java@tedu.cn
* @version 0.0.1
*/
@Slf4j
@Configuration
public class RedisConfiguration {
@Bean
public RedisTemplate<String, Serializable> redisTemplate(
RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Serializable> redisTemplate
= new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.setKeySerializer(RedisSerializer.string());
redisTemplate.setValueSerializer(RedisSerializer.json());
return redisTemplate;
}
}
Redis测试
// 使用Redis时,Key是自由命名的
// 建议Key(名称)是分多段的
// 例如“品牌列表”,应该由 brand 和 list 这2个单词组成
// 并且,多个单词之间推荐使用英文的冒号进行分隔,例如:brand:list
// 对于同一种类型的数据,Key的第1段应该是相同的
// 例如,id=6对应的品牌数据的Key应该中:brand:item:6
// keys brand*
@Slf4j
@SpringBootTest
public class RedisTemplateTests {
@Autowired
RedisTemplate<String, Serializable> redisTemplate;
@Test
void testValueOpsSetObject() {
// ValueOperations:用于实现string(Redis)的读写
ValueOperations<String, Serializable> ops = redisTemplate.opsForValue();
// 向Redis中“存入” / “修改”数据
String key = "brand:item:1";
Brand brand