Redis支持五种数据类型:
字符串(String)
哈希(Hash)
列表(List)
集合(Set)
有序集合(Sorted Set)
1. String类型
String类型是Redis最基本的数据类型,它可以存储任何形式的字符串,包括数字、字母、符号等。使用场景包括缓存、计数器、计分器等。
常用命令
SET key value
:设置key对应的值为value。GET key
:返回key对应的值,如果key不存在,则返回null。DEL key
:删除指定的key。
Spring Boot代码示例
单机版Redis配置
在pom.xml中添加redis依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
在application.ymls配置文件中添加以下代码:
spring:
#redis配置文件
redis:
host: 192.168.220.128 #redis所在服务器IP地址
port: 6379 #端口号。默认6379
password: 123456 #连接密码,配置文件中设置
RedisTemplate操作Redis
@Component
public class RedisService {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void set(String key, Object value) {
//添加数据
redisTemplate.opsForValue().set(key, value);
}
public Object get(String key) {
//根据key获取数据
return redisTemplate.opsForValue().get(key);
}
public void delete(String key) {
//根据key删除数据
redisTemplate.delete(key);
}
}
2. List类型
List类型是Redis中的一个链表结构,它可以存储多个字符串元素,且每个元素都有一个索引值,支持从两端进行插入、删除、查找等操作。使用场景包括秒杀、抢购、队列等。
常用命令
LPUSH key value1 [value2 ...]
:从列表的左侧添加一个或多个元素。RPUSH key value1 [value2 ...]
:从列表的右侧添加一个或多个元素。LPOP key
:从列表的左侧移除并返回第一个元素。RPOP key
:从列表的右侧移除并返回最后一个元素。LRANGE key start stop
:返回列表中指定范围内的元素。
Spring Boot代码示例
@Component
public class RedisService {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void leftPush(String key, Object value) {
//将 value 插入到 key 对应的列表的头部。
redisTemplate.opsForList().leftPush(key, value);
}
public void rightPush(String key, Object value) {
//将 value 插入到 key 对应的列表的尾部。
redisTemplate.opsForList().rightPush(key, value);
}
public Object leftPop(String key) {
//从 key 对应的列表的头部删除并返回一个元素。
return redisTemplate.opsForList().leftPop(key);
}
public Object rightPop(String key) {
//从 key 对应的列表的尾部删除并返回一个元素。
return redisTemplate.opsForList().rightPop(key);
}
public List<Object> range(String key, long start, long end) {
//返回列表中指定范围内的元素。
return redisTemplate.opsForList().range(key, start, end);
}
}
3. Set类型
Set类型是Redis中的一个无序集合,它可以存储一组字符串元素,并且每个元素都是唯一的。使用场景包括社交网络、博客评论等。
常用命令
SADD key member1 [member2 ...]
:向集合中添加一个或多个元素。SMEMBERS key
:返回集合中的所有元素。SISMEMBER key member
:判断元素是否在集合中。
Spring Boot代码示例
@Component
public class RedisService {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void add(String key, Object... values) {
//向集合中添加一个或多个元素。
redisTemplate.opsForSet().add(key, values);
}
public Set<Object> members(String key) {
//返回集合中的所有元素。
return redisTemplate.opsForSet().members(key);
}
public Boolean isMember(String key, Object value) {
//判断元素是否在集合中。
return redisTemplate.opsForSet().isMember(key, value);
}
}
4. Sorted Set类型
Sorted Set类型是Redis中的一个有序集合,它可以存储多个字符串元素,并且每个元素都有一个分数值,支持根据分数值从小到大或从大到小进行排序。使用场景包括排行榜、计分器等。
常用命令
ZADD key score1 member1 [score2 member2 ...]
:向有序集合中添加一个或多个元素。ZRANGE key start stop [WITHSCORES]
:返回有序集合中指定范围内的元素。
Spring Boot代码示例
@Component
public class RedisService {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void add(String key, double score, Object value) {
//向有序集合中添加一个元素并指定分数
redisTemplate.opsForZSet().add(key, value, score);
}
public Set<Object> range(String key, long start, long end) {
//返回有序集合中指定范围内的元素。
return redisTemplate.opsForZSet().range(key, start, end);
}
public Set<ZSetOperations.TypedTuple<Object>> rangeWithScores(String key, long start, long end) {
//获取指定score范围内元素
return redisTemplate.opsForZSet().rangeWithScores(key, start, end);
}
}
5. Hash类型
Hash类型是Redis中的一个键值对集合,它可以存储多个字段和值。使用场景包括存储对象、配置参数等。
常用命令
HSET key field value
:设置哈希表中指定字段的值。HGET key field
:返回哈希表中指定字段的值。HGETALL key
:返回哈希表中所有字段和值。
Spring Boot代码示例
@Component
public class RedisService {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void set(String key, String field, Object value) {
//设置哈希表中指定字段的值。
redisTemplate.opsForHash().put(key, field, value);
}
public Object get(String key, String field) {
//返回哈希表中指定字段的值。
return redisTemplate.opsForHash().get(key, field);
}
public Map<Object, Object> getAll(String key) {
//返回哈希表中所有字段和值。
return redisTemplate.opsForHash().entries(key);
}
}