Redis 实战缓存

本篇概要:

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

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

set key value
get key 
ttl key

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

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

3. 封杀单ip;

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

4. 封杀ip段;

  • list 类型,列表,可以塞入字符串,可以按顺序也可直接插入奥列表头部尾部
# 从键头部插入
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 hualrange users 0 -1
# 显示:
# 1 zhang
# 2 hua
  • 实战:ip前三段,装入list。ip段数量到阈值,整段被禁止

5. 缓存预热;

set users hua EX 200
ttl users

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

  • 当缓存拥有多个独立字段,且会发生变化时,单纯的string就不适合了
  • hash数据类型,常用于商品缓存
# 基本命令:
# 设置值:(表 - 字段 - 值)
hset key field value 
# 取值:
hget key fieldhset news101 news_id 101
hset news101 news_title testtitlehget 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,适合排行榜
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/183303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

纯js实现录屏并保存视频到本地的尝试

前言:先了解下:navigator.mediaDevices,mediaDevices 是 Navigator 只读属性,返回一个 MediaDevices 对象,该对象可提供对相机和麦克风等媒体输入设备的连接访问,也包括屏幕共享。 const media navigator…

【刷题】DFS

DFS 递归: 1.判断是否失败终止 2.判断是否成功终止,如果成功的,记录一个成果 3.遍历各种选择,在这部分可以进行剪枝 4.在每种情况下进行DFS,并进行回退。 199. 二叉树的右视图 给定一个二叉树的 根节点 root&#x…

深度学习之十二(图像翻译AI算法--UNIT(Unified Neural Translation))

概念 UNIT(Unified Neural Translation)是一种用于图像翻译的 AI 模型。它是一种基于生成对抗网络(GAN)的框架,用于将图像从一个域转换到另一个域。在图像翻译中,这意味着将一个风格或内容的图像转换为另一个风格或内容的图像,而不改变图像的内容或语义。 UNIT 的核心…

IDEA2022 Git 回滚及回滚内容恢复

IDEA2022 Git 回滚 ①选择要回滚的地方,右键选择 ②选择要回滚的模式 ③开始回滚 ④soft模式回滚的内容会保留在暂存区 ⑤输入git push -f ,然后重新提交,即可同步远程 注意观察IDEA右下角分支的标记,蓝色代表远程内容未同步到本…

数据结构 / day06 作业

1.下面的代码打印在屏幕上的值是多少? /下面的代码打印在屏幕上的值是多少?#include "stdio.h"int compute_data(int arr[], unsigned int len) {long long int result 0;if(result len)return arr[0];resultcompute_data(arr,--len);printf("len%d, res…

elementui中table进行表单验证

<el-form :model"ruleForm" ref"ruleForm" class"demo-ruleForm"><el-table :data"ruleForm.tableDataShou" border style"width: 100%;"><el-table-column type"index" label"序号" wi…

Android12源码分析

Android 12的源码结构与之前的版本类似&#xff0c;但也有一些新的变化和特性。以下是对Android 12源码结构的简要解析&#xff1a; 1. 系统源代码&#xff1a;这部分包含了整个Android操作系统的核心代码&#xff0c;包括Linux内核、系统库、运行时环境&#xff08;ART&#…

Flink源码解析零之重要名词的理解

名词解释 1)StreamGraph 根据用户通过 Stream API 编写的代码生成的最初的图。 (1)StreamNode 用来代表 operator 的类,并具有所有相关的属性,如并发度、入边和出边等。 (2)StreamEdge 表示连接两个StreamNode的边。 2)JobGraph StreamGraph经过优化后生成了 J…

【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能

文章目录 ⭐⭐⭐Spring核心源码分析自定义Spring框架⭐⭐⭐一、Spring使用回顾二、Spring核心功能结构1、Spring核心功能2、bean概述 三、Spring IOC相关接口分析1、BeanFactory解析2、BeanDefinition解析3、BeanDefinitionReader解析4、BeanDefinitionRegistry解析5、创建容器…

伪集群配置

编辑core-site 配置core-site 配置hdfs-site 将以下的文件配置进去 启动一下hadoop产生tmp文件 产生这个叫namenode的文件并格式化 回到~目录 再配置以下信息 配置以下信息 重启文件 再重新格式化配置namenode 再启动一下&#xff0c;然后jps看看&#xff0c;出现这样就…

java后端自学总结

自学总结 MessageSource国际化接口总结 MessageSource国际化接口 今天第一次使用MessageSource接口,比较意外遇到了一些坑 messageSource是spring中的转换消息接口&#xff0c;提供了国际化信息的能力。MessageSource用于解析 消息&#xff0c;并支持消息的参数化和国际化。 S…

运维知识点-openResty

openResty 企业级实战——畅购商城SpringCloud-网站首页高可用解决方案-openRestynginxlua——实现广告缓存测试企业级实战——畅购商城SpringCloud-网站首页高可用解决方案-openRestynginxlua——OpenResty 企业级实战——畅购商城SpringCloud-网站首页高可用解决方案-openRes…

机器学习中参数优化或交叉验证评估指标含义

在Scikit-Learn中&#xff0c;cross_val_score函数支持多种不同的评分标准&#xff08;scoring参数&#xff09;。以下是一些常见的评分标准及其应用场景&#xff1a; 参考链接&#xff1a; https://blog.csdn.net/worther/article/details/126909270 https://zhuanlan.zhihu.c…

优化器原理——权重衰减(weight_decay)

优化器原理——权重衰减&#xff08;weight_decay&#xff09; weight_decay的作用 原理解析 实验观察 在深度学习中&#xff0c;优化器的 weight_decay 参数扮演着至关重要的角色。它主要用于实现正则化&#xff0c;以防止模型过拟合。过拟合是指模型在训练数据上表现优异&…

【科技素养】蓝桥杯STEMA 科技素养组模拟练习试卷12

单选题 1、电子邮件地址中一定会出现的字符&#xff08;&#xff09; A、- B、 C、&#xff01; D、# 答案&#xff1a;B 2、以下常见的电脑硬件中&#xff0c;&#xff08;&#xff09;不是一种输入设备 A、鼠标 B、键盘 C、触摸板 D、显示器 答案&#xff1a;D 3、…

python | 简易版: pdf 转换为 word 方法

一、 前言 本文利用python将pdf转换为word方法&#xff0c;需要用到两个第三方模块&#xff0c;分别是&#xff1a; &#xff08;1&#xff09;pdfplumber&#xff0c;用来解析pdf文档&#xff0c;包括pdf的基本信息&#xff08;作者、创建时间、修改时间…&#xff09;及表格…

从意义中恢复,而不是从数据包中恢复

从书报&#xff0c;录放机&#xff0c;电视机到智能手机&#xff0c;vr 眼镜&#xff0c;所有学习的&#xff0c;娱乐的工具或玩具&#xff0c;几乎都以光声诉诸视听&#xff0c;一块屏幕和一个喇叭。 视觉和听觉对任何动物都是收发信息的核心&#xff0c;诉诸视觉和听觉的光和…

批量将本地N个英文Html文档进行中文翻译-源码篇

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

机器学习笔记 - 3D数据的常见表示方式

一、简述 从单一角度而自动合成3D数据是人类视觉和大脑的基本功能,这对计算机视觉算法来说是比较难的。但随着LiDAR、RGB-D 相机(RealSense、Kinect)和3D扫描仪等3D传感器的普及和价格的降低,3D 采集技术的最新进展取得了巨大飞跃。与广泛使用的 2D 数据不同,3D 数据具有丰…

[node] Node.js 中Stream流

[node] Node.js 中Stream流 什么是 Stream流操作从流中读取数据写入流管道流链式流 什么是 Stream Stream 是一个抽象接口&#xff0c;Node 中有很多对象实现了这个接口。例如&#xff0c;对http 服务器发起请求的request 对象就是一个 Stream&#xff0c;还有stdout&#xff…