Redis 缓存使用指南
为什么选择 Redis 缓存
- Pig 框架与 Redis 强耦合,整个应用构建在 Redis 之上
- Redis 是目前市场上最好的开源内存 NoSQL 数据库之一,是主流公司基础中间件和必备技术选型
RedisUtils 工具类
RedisUtils 提供了丰富的缓存操作方法,支持多种数据类型的操作。
基础操作
方法名称 | 方法作用 | 参数描述 |
---|---|---|
expire | 指定缓存失效时间 | key:键,time:时间 (秒) |
getExpire | 根据 key 获取过期时间 | key:键 不能为 null |
scan | 查找匹配 key | pattern:key |
findKeysForPage | 分页查询 key | patternKey:key,page:页码,size:每页数目 |
hasKey | 判断 key 是否存在 | key:键 |
del | 删除缓存 | keys:可传一个值或多个 |
分布式锁
方法名称 | 方法作用 | 参数描述 |
---|---|---|
getLock | 获取锁 | lockKey:锁 key,value:value,expireTime:过期时间 (单位秒) |
releaseLock | 释放锁 | lockKey:锁 key,value:value |
字符串操作
方法名称 | 方法作用 | 参数描述 |
---|---|---|
get | 普通缓存获取 | key:键 |
multiGet | 批量获取 | keys:键的集合 |
set | 普通缓存放入 | key:键,value:值 |
set | 普通缓存放入并设置时间 | key:键,value:值,time:时间 (秒) |
Hash 操作
方法名称 | 方法作用 | 参数描述 |
---|---|---|
hget | HashGet | key:键,不能为 null hashKey:项,不能为 null |
hmget | 获取 hashKey 对应的所有键值 | key:键 |
hmset | HashSet | key:键 map:对应多个键值 |
hset | 向一张 hash 表中放入数据,如果不存在将创建 | key:键 item:项 value:值 |
hdel | 删除 hash 表中的值 | key:键,不能为 null item:项,可以使多个,不能为 null |
hHasKey | 判断 hash 表中是否有该项的值 | key:键,不能为 null item:项,不能为 null |
hincr | hash 递增 | key:键 item:项 by:要增加几 (大于 0) |
hdecr | hash 递减 | key:键 item:项 by:要减少记 (小于 0) |
Set 操作
方法名称 | 方法作用 | 参数描述 |
---|---|---|
sGet | 根据 key 获取 Set 中的所有值 | key:键 |
sHasKey | 根据 value 从一个 set 中查询,是否存在 | key:键 value:值 |
sSet | 将数据放入 set 缓存 | key: 键,values: 值 可以是多个 |
sSetAndTime | 将 set 数据放入缓存 | key: 键,time: 时间 (秒), values: 值 可以是多个 |
sGetSetSize | 获取 set 缓存的长度 | key: 键 |
setRemove | 移除值为 value 的 | key: 键,values: 值 可以是多个 |
sDifference | 获集合 key1 和集合 key2 的差集元素 | key: 键,otherKey: 集合 key2 的键 |
List 操作
方法名称 | 方法作用 | 参数描述 |
---|---|---|
lGet | 获取 list 缓存的内容 | key: 键,start: 开始索引,end: 结束索引 (0 到 -1 代表所有值) |
lGetListSize | 获取 list 缓存的长度 | key: 键 |
lGetIndex | 通过索引获取 list 中的值 | key: 键,index: 索引 |
lSet | 将 list 放入缓存 | key: 键,value: 值 |
lUpdateIndex | 根据索引修改 list 中的某条数据 | key:键 index:索引 value:值 |
lRemove | 移除 N 个值为 value | key:键 count:移除多少个 value:值 |
Sorted Set 操作
方法名称 | 方法作用 | 参数描述 |
---|---|---|
zSetAndTime | 将 zSet 数据放入缓存 | key:键 time:时间 tuples:值 |
zRangeByScore | Sorted set:有序集合获取 | key:键 min:最小分数 max:最大分数 |
zRange | Sorted set:有序集合获取 正序 | key:键 start:开始位置 end:结束位置 |
zReverseRange | Sorted set:有序集合获取 倒叙 | key:键 start:开始位置 end:结束位置 |
zGetSetSize | 获取 zSet 缓存的长度 | key:键 |
RedisTemplate 直接操作
引入 core 模块后,自动获得 Redis 缓存能力
依赖配置
使用示例
支持的数据类型
- HashOperations:对 hash 类型的数据操作
- ValueOperations:对 redis 字符串类型数据操作
- ListOperations:对链表类型的数据操作
- SetOperations:对无序集合类型的数据操作
- ZSetOperations:对有序集合类型的数据操作
Spring Cache 注解模式
@Cacheable 添加缓存
主要针对方法配置,能够根据方法的请求参数对其结果进行缓存
Cacheable 注解示例
@CacheEvict 清空缓存
CacheEvict 注解示例
属性说明
属性 | 说明 |
---|---|
value | 缓存的名称,在 spring 配置文件中定义,必须指定至少一个 |
key | 缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写 |
condition | 缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false |
unless | 否定缓存,当条件结果为 true 时,就不会缓存 |
♥️ 获取支持
遇到问题?
如果您在使用过程中遇到任何问题、有功能建议或需求,请点击此卡片前往 Gitee 仓库提交 Issue。