目录
Redis 是一个基于内存的 key-value 结构数据库。
5 种常用数据类型介绍
Redis 存储的是 key-value 结构的数据,其中 key 是字符串类型,value 有 5 种常用的数据类型:
- 字符串 (string):普通字符串,Redis 中最简单的数据类型
- 哈希 (hash):也叫散列,类似于 Java 中的 HashMap 结构
- 列表 (list):按照插入顺序排序,可以有重复元素,类似于 Java 中的 LinkedList
- 集合 (set):无序集合,没有重复元素,类似于 Java 中的 HashSet
- 有序集合 (sorted set /zset):集合中每个元素关联一个分数(score),根据分数升序排序,没有重复元素
Redis 常用命令
字符串操作命令(string)
Redis 字符串类型常用命令:
- SET key value:设置指定 key 的值
- GET key:获取指定 key 的值
- SETEX key seconds value:设置指定 key 的值,并将 key 的过期时间设为 seconds 秒
- SETNX key value:只有在 key 不存在时设置 key 的值
哈希操作命令(hash)
- HSET key field value:将哈希表 key 中的字段 field 的值设为 value
- HGET key field:获取存储在哈希表中指定字段的值
- HDEL key field:删除存储在哈希表中的指定字段
- HKEYS key:获取哈希表中所有字段
- HVALS key:获取哈希表中所有值
列表操作命令(list)
Redis 列表是简单的字符串列表,按照插入顺序排序,常用命令:
- LPUSH key value1 [value2]:将一个或多个值插入到列表头部
- LRANGE key start stop:获取列表指定范围内的元素
- RPOP key:移除并获取列表最后一个元素
- LLEN key:获取列表长度
集合操作命令(set)
无序不重复
Redis set 是 string 类型的无序集合。集合成员是唯一的,集合中不能出现重复的数据,常用命令:
- SADD key member1 [member2]:向集合添加一个或多个成员
- SMEMBERS key:返回集合中的所有成员
- SCARD key:获取集合的成员数
- SINTER key1 [key2]:返回给定所有集合的交集
- SUNION key1 [key2]:返回所有给定集合的并集
- SREM key member1 [member2]:删除集合中一个或多个成员
有序集合操作命令(sorted set /zset)
有序不重复
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 Data Redis 使用方式
操作步骤:
① 导入 Spring Data Redis 的 maven 坐标
② 配置 Redis 数据源
③ 编写配置类,创建 RedisTemplate 对象
④ 通过 RedisTemplate 对象操作 Redis
![]()
package com.sky.controller.admin; import com.sky.result.Result; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; @RestController("adminShopController") @RequestMapping("/admin/shop") @Slf4j public class ShopController { public static final String KEY = "SHOP_STATUS"; @Autowired private RedisTemplate redisTemplate; //设置营业状态 @PutMapping("/{status}") public Result setStatus(@PathVariable Integer status){ log.info("设置店铺的营业状态为:{}",status == 1 ? "营业中" : "打烊中"); redisTemplate.opsForValue().set(KEY,status); return Result.success(); } @GetMapping("/status") public Result<Integer> getStatus(){ Integer status = (Integer) redisTemplate.opsForValue().get(KEY); log.info("获取店铺营业状态:{}",status == 1 ? "营业中" : "打烊中"); return Result.success(status); } }




173万+

被折叠的 条评论
为什么被折叠?



