redis入门

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 通用命令

通用命令不分数据类型,均可使用:

  • KEYS pattern:查找所有符合给定模式(pattern)的 key

  • EXISTS key:检查给定 key 是否存在

  • TYPE key:返回 key 所储存的值的类型

  • DEL key:在 key 存在时删除 key

在 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 生成)

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计