概述

Redis是一种开源的内存数据存储结构,是一种key-value形式存储系统。采用纯内存的方式,一般使用都是简单的存取操作,线程占用时间比较短,使用时间主要集中在IO上,所以读取速度快。

安装

windows安装方式:访问https://github.com/tporadowski/redis/releases,选择可下载版本的zip文件,解压后即可使用。

Docker安装方式
1.拉取Redis镜像

1
docker pull redis

2.容器运行

1
docker run --name redis -d -p 6379:6379 redis

3.容器运行并挂载同时启动Redis服务开启AOF持久化模式

1
docker run --name redis -d -p 6379:6379 -v /your/redis/data:/data redis redis-server --appendonly yes

使用

管理工具

使用指令方式来操作Redis并不方便,这里推荐一款免费开源的客户端工具来实现对Redis管理和控制。访问https://github.com/qishibo/AnotherRedisDesktopManager/releases,选择可下载的.exe后缀文件进行下载安装即可。

Another Redis Desktop Manager
Another Redis Desktop Manager

操作指令

在实际使用Redis时,都是通过工具类具体处理Redis的存取,这边只简单介绍一些常用的操作字符串的指令以便在无客户端连接情况下操作:
1.设置键的值

1
set key value

2.获取键的值

1
get key

3.设置键的值并设置过期时间(秒)

1
setex key seconds value

4.设置键的值并设置过期时间(毫秒)

1
psetex key millisenconds value

5.设置键不存在时的值

1
setnx key value

6.获取键的值并将键设置为新值

1
getset key value

7.将值附加到键末尾

1
append key value

8.设置键的过期时间(秒)

1
expire key seconds

9.设置键的过期时间(毫秒)

1
pexpire key milliseconds

10.获取键的过期时间(秒)

1
TTL key

11.获取键的剩余时间(毫秒)

1
PTTL key

12.移除键的过期时间,使其成为持久化

1
persist key

场景使用

SpringBoot中提供了用于简化Redis数据操作的其实依赖,它集成了Spring Data Redis,使得在SpringBoot应用中操作Redis更加方便。

1.添加Redis依赖

1
2
3
4
<dependency>  
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2.配置Redis

1
2
3
4
5
6
7
8
9
spring:
redis:
host: localhost
port: 6379
password: password
timeout: 2000
database: 0
ssl:
enabled: true

3.配置RedisTemplate

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<Object, Object> redisTemplate() {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer<Object> jsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(jsonRedisSerializer);
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(jsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}

4.配置Redis工具类以便更好使用Redis

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class RedisUtil {  

private static RedisTemplate<Object,Object> redisTemplate = (RedisTemplate<Object, Object>) SpringBeanUtils.getBean("redisTemplate");

/**
* 获取Redis值
*/
public static Object get(String key) {
return redisTemplate.opsForValue().get(key);
}

/**
* 设置Redis的键值
*/
public static void set(String key, Object value) {
redisTemplate.opsForValue().set(key, value);
}

/**
* 设置Redis键值(含过期时间)
*/ public static void set(String key, Object value, Long seconds, TimeUnit timeUnit) {
redisTemplate.opsForValue().set(key, value, seconds, timeUnit);
}

/**
* 删除Redis键值
*/
public static void delete(String key) {
redisTemplate.delete(key);
}

/**
* 设置Redis键值过期时间(当前时间之后多久过期)
*/ public static void expire(String key, Long seconds, TimeUnit timeUnit) {
redisTemplate.expire(key, seconds, timeUnit);
}

/**
* 设置Redis在指定具体时间过期
*/
public static void expire(String key, Duration duration) {
redisTemplate.expire(key, duration);
}

}