Redis 核心知识
Redis 集合(Set)
Redis Set 是 string 类型的无序集合,集合成员唯一,不允许重复数据。
常用命令
-
SADD key member1 [member2]:向集合添加一个或多个成员
-
SMEMBERS key:返回集合中的所有成员
-
SCARD key:获取集合的成员数
-
SINTER key1 [key2]:返回给定所有集合的交集
-
SUNION key1 [key2]:返回所有给定集合的并集
-
SREM key member1 [member2]:删除集合中一个或多个成员
Redis 有序集合(Sorted Set)
Redis 有序集合是 string 类型元素的集合,不允许重复成员,每个元素会关联一个 double 类型的分数(用于排序)。
常用命令
-
ZADD key score1 member1 [score2 member2]:向有序集合添加一个或多个成员
-
ZRANGE key start stop [WITHSCORES]:通过索引区间返回有序集合中指定区间内的成员
-
ZINCRBY key increment member:有序集合中对指定成员的分数加上增量 increment
-
ZREM key member [member...]:移除有序集合中的一个或多个成员
Redis 通用命令
通用命令不分数据类型,均可使用:
在 Spring 中使用 Redis
1. 增加 String 类型数据
无过期时间
1
2
|
stringRedisTemplate.opsForValue().set("name", "张三");
|
带过期时间(10分钟后过期)
1
2
3
4
|
import java.util.concurrent.TimeUnit;
stringRedisTemplate.opsForValue().set("code", "123456", 10, TimeUnit.MINUTES);
|
2. 哈希表(Hash)操作
向哈希表添加字段
1
2
3
4
|
// 向哈希表"user:100"中添加字段"name"和"age"
stringRedisTemplate.opsForHash().put("user:100", "name", "李四");
stringRedisTemplate.opsForHash().put("user:100", "age", "20");
|
3. 列表(List)操作
右侧添加元素(右插,类似队列)
1
2
3
|
stringRedisTemplate.opsForList().rightPush("fruits", "苹果");
stringRedisTemplate.opsForList().rightPush("fruits", "香蕉");
|
左侧添加元素(左插,类似栈)
1
2
|
stringRedisTemplate.opsForList().leftPush("fruits", "西瓜");
|
4. 集合(Set)操作
向集合添加元素
1
2
|
stringRedisTemplate.opsForSet().add("tags", "java", "spring", "redis");
|
5. 有序集合(Sorted Set)操作
向有序集合添加元素(score 为排序权重)
1
2
3
|
stringRedisTemplate.opsForZSet().add("ranking", "用户A", 90);
stringRedisTemplate.opsForZSet().add("ranking", "用户B", 85);
|
6. 查询操作
查询 String 类型值
1
2
|
String name = stringRedisTemplate.opsForValue().get("name"); // 结果:"张三"
|
查询哈希表指定字段值
1
2
|
Object userName = stringRedisTemplate.opsForHash().get("user:100", "name"); // 结果:"李四"
|
查询哈希表所有字段和值
1
2
3
|
Map<Object, Object> userMap = stringRedisTemplate.opsForHash().entries("user:100");
// userMap 结果:{"name":"李四", "age":"20"}
|
查询列表所有元素
1
2
3
|
List<String> fruits = stringRedisTemplate.opsForList().range("fruits", 0, -1);
// 结果:["西瓜", "苹果", "香蕉"](左插的"西瓜"在最前)
|
查询集合所有元素
1
2
3
|
Set<String> tags = stringRedisTemplate.opsForSet().members("tags");
// 结果:["java", "spring", "redis"](无序)
|
(注:文档部分内容可能由 AI 生成)