spring-boot-starter-data-redis
spring-boot-starter-data-redis是Spring对redis一系列操作进行的封装。它简化了很多redis的操作,
让开发的精力更多的投入在业务上面。
依赖的引入
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.6.2</version>
</dependency>
</dependencies>
参数配置
spring:
application:
name: redis
redis:
database: 0
host: 127.0.0.1
jedis:
pool:
#最大连接数据库连接数,设 0 为没有限制
max-active: 8
#最大等待连接中的数量,设 0 为没有限制
max-idle: 8
#最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
max-wait: -1ms
#最小等待连接中的数量,设 0 为没有限制
min-idle: 0
lettuce:
pool:
max-active: 8
max-idle: 8
max-wait: -1ms
min-idle: 0
shutdown-timeout: 1000ms
password: 你的密码
port: 6379
server:
port: 8000
redis的操作
spring-boot-starter-data-redis提供了两个操作Redis的工具,StringRedisTemplate
和
RedisTemplate
两者的区别主要有下面
- StringRedisTemplate是RedisTemplate的子类
- 两者使用了不同的序列化类,RedisTemplate使用的是JdkSerializationRedisSerializer,StringRedisTemplate使用的是StringRedisSerializer。
- StringRedisTemplate更加专注于字符串的操作,而RedisTemplate提供了更多的数据类型的操作。
- RedisTemplate将数据保存到Redis中的时候会将值和键都序列化成字节数组进行保存。
RedisTemplate支持的数据类型
因为StringRedisTemplate是继承于RedisTemplate的所以,目前主要介绍StringRedisTemplate
操作字符串
redisTemplate.opsForValue();
操作hash
redisTemplate.opsForHash();
操作list
redisTemplate.opsForList();
操作set
redisTemplate.opsForSet();
操作ZSet(有序set)
redisTemplate.opsForZSet();
操作Geo(地图信息)
redisTemplate.opsForGeo();
操作HyperLogLog(HyperLogLog算法)
redisTemplate.opsForHyperLogLog()
基础操作
公共方法
设置过期时间
redisTemplate提供了expire来设置某个key的过期时间
@Override
public void setExpire(String key, long timeout, TimeUnit unit) {
//设置超时时间10秒 第三个参数控制时间单位,详情查看TimeUnit
redisTemplate.expire(key,timeout,unit);
}
删除某个key的内容
redisTemplate提供了delete来删除某个key
/**
* 删除某个Key
* @param key
* @param timeout
* @param unit
*/
@Override
public void remove(String key, long timeout, TimeUnit unit) {
//设置超时时间10秒 第三个参数控制时间单位,详情查看TimeUnit
redisTemplate.delete(key);
}
对字符串的操作
对字符串的操作应该算是Redis最基础的功能了
设置和取出字符串内容
@Override
public void setData(String key,String value) {
stringRedisTemplate.opsForValue().set(key,value);
}
@Override
public String getData(String key) {
return stringRedisTemplate.opsForValue().get(key);
}
对List的操作
根据源码可以看到从redis中取出的的确是list但是Spring封装了一些模仿Deque的方法,实现了双端操作
/**
* 操作list的操作
* @param key
* @param value
* @param location
*/
@Override
public void setListData(String key,String value,ListLocation location)<