Redis 实战缓存

本篇概要:

  • [1. 设置、查询、获取过期时间;](#1. 设置、查询、获取过期时间;)
  • [2. 缓存穿透:设置空键;](#2. 缓存穿透:设置空键;)
  • [3. 封杀单ip;](#3. 封杀单ip;)
  • [4. 封杀ip段;](#4. 封杀ip段;)
  • [5. 缓存预热;](#5. 缓存预热;)
  • [6. 使用 hash 数据类型保存新闻的缓存,增加点击量;](#6. 使用 hash 数据类型保存新闻的缓存,增加点击量;)
  • [7. Sorted set(有序集合) 分离新闻缓存内容和新闻点击量、排行榜、预热新闻;](#7. Sorted set(有序集合) 分离新闻缓存内容和新闻点击量、排行榜、预热新闻;)

1. 设置、查询、获取过期时间;

php 复制代码
set key value
get key 
ttl key

2. 缓存穿透:设置空键;

  • 先从redis取,没取到再数据库取,再没取到设置默认值
  • 如果是默认缓存,到一定次数不让再刷
php 复制代码
# 命令:
expire

3. 封杀单ip;

  • 对于单独ip,开辟一个 key value,key = 前缀 + ip

4. 封杀ip段;

  • list 类型,列表,可以塞入字符串,可以按顺序也可直接插入奥列表头部尾部
php 复制代码
# 从键头部插入
lpush key value
# 获取列表长度
llen

# 操作
lpush users hua
lpush users zhang
lrange users 0 -1
# 显示:
# 1 zhang
# 2 hua

# 尾部插入
# 删除:
del users
# 重新插入:
rpush users zhang
rpush users hua

lrange users 0 -1
# 显示:
# 1 zhang
# 2 hua
  • 实战:ip前三段,装入list。ip段数量到阈值,整段被禁止

5. 缓存预热;

php 复制代码
set users hua EX 200
ttl users

6. 使用 hash 数据类型保存新闻的缓存,增加点击量;

  • 当缓存拥有多个独立字段,且会发生变化时,单纯的string就不适合了
  • hash数据类型,常用于商品缓存
php 复制代码
# 基本命令:
# 设置值:(表 - 字段 - 值)
hset key field value 
# 取值:
hget key field

hset news101 news_id 101
hset news101 news_title testtitle

hget news101 news_id
hgetall news101

# 显示
# 1) "news_id"
# 2) "101"
# 3) "news_title"
# 4) "testtitle"

# 更新写法:
# 获取所有
hgetall key 
# 获取所以keys
hkeys key 
# 获取所有 vals
hvals keys 

hmset news102 news_id 102 news_title testtitle2
hmget news102 news_id news_title
# (初始没有 views 也会自增1)
hincrby news102 views 1

7. Sorted set(有序集合) 分离新闻缓存内容和新闻点击量、排行榜、预热新闻;

  • 之前还有个 set 类型
  • Sorted set 自带一个 score,适合排行榜
php 复制代码
zadd key score member

# 举例:
zadd news 19 news101:
# 理解为名为news(模块)这个集合,加入一个元素叫news101,score是19
# 一个系统模块很多,都要用单独的集合名称

# 如果2条新闻,保存点击量
zadd news 12 news101
zadd news 31 news102

# 查看 从第一条到最后一条
zrange news 0 -1 
# 取前三名:
zrange news 0 2
# 带分数查看
zrange news 0 -1 withscores 
# 查看排名(0 就是第一位)
zrank news 
# 倒序
zrevrange news 0 -1 with score 

# 给指定元素加分
# 返回加完之后的值,没有则新增
zincrby news 1 news101 

# 查询分数:
zscore news news101

# 排行榜的各种套路:
zrange news 0 -1

# 根据指定分数看排行榜:
zrangebyscore news 15 22
zrevrangebyscore news 22 15
# 以上加上score可以查看score
相关推荐
瀚高PG实验室2 分钟前
发布端逻辑复制槽消失
数据库·postgresql·瀚高数据库
ss27311 分钟前
PostgreSQL慢查询定位与优化
数据库·postgresql
香蕉大香蕉(06敬畏市场)35 分钟前
MySQL 单点详解(07)
java·数据库·mysql·ai·博客·八股
smilejingwei2 小时前
TRAE 插件上新 | SQLazy:让 AI 写出可信复杂 SQL
数据库·人工智能·sql
我要见SA姐12 小时前
GitHub Actions 自动化:5 个真实运维提效案例
运维·数据库·机器学习·oracle·回归
QXWZ_IA3 小时前
边坡监测预算有限时的建设顺序:虚拟基准站与成本账
网络·数据库
这个DBA有点耶4 小时前
1亿条向量内存降95.4%,延迟降80%:金仓AI原生内核真能解决RAG痛点?
数据库·人工智能·开源
Y3815326624 小时前
用 httpx 写 SerpBase 异步客户端:连接池与超时配置
运维·服务器·数据库
c_hn_0074 小时前
量化数据12:国内期货L2历史数据:Tick、逐笔、五档盘口一次性打包下载
数据库·1024程序员节·#深度订单簿数据·#历史行情订单薄·#本地csv数据存储
GeW4 小时前
从"补短板"到"强优势"Linux与数据库认证成为产业跃迁人才支点
linux·数据库