首页 > 数据库 >redis应用场景--缓存过期时间

redis应用场景--缓存过期时间

时间:2023-06-08 13:56:19浏览次数:38  
标签:缓存 get -- redis 过期 print conn

缓存可以有效的提高关键数据的获取速度,使得不必要每次查询数据库,避免了数据库被击穿。

主动更新:

  需要知道这份数据的实效时间点,然后在那个时间点到来时重新更新数据,可能是查询数据库,也可能是访问第三接口,在获得数据之后,更新redis缓存。

被动更新

  程序每次都去redis获取数据,但对这份数据设置了一个实效时间,X时间失效后,无从从redis获取到数据的情况下,通过查询数据库或者访问第三方接口重新获得数据,并更新redis缓存,最后,设置数据过期时间为X

  相比较而言,被动更新是更为稳妥可靠简单的方法,主动更新要求你知道每一条数据的具体过期时间,在即将过期之间去更新缓存,这样做无疑增加了服务的复杂程度,你可能需要一个单独的进程来完成这个过程。而被动更新只需要在代码里对reids缓存失效做一下更新处理就可以,大部分时间里它都是有效的,直到数据过期,你的更新缓存的代码才会被执行。

设置redis的key的过期时间有两种方式,一种方式是制定多少秒以后过期,另一种方式是在指定时间过期。下面我将分别采用golang和python分别实现这两种方式

Python:

from redis.client import Redis
import time
conn = Redis(host="0.0.0.0",port=6379,db=0,password="")

conn.set("key1","value1")
conn.expire("key1",5)
print(conn.get("key1"))
time.sleep(3)
print(conn.get("key1").decode(encoding="utf-8"))
time.sleep(3)
if conn.get("key1") != None:
    print(conn.get("key1").decode(encoding="utf-8"))
else:
    print("key1 已过期")
输出结果:
b'value1'
value1
key1 已过期

第二种方式:

conn.set("test_key","test_value")
conn.expireat("test_key",datetime.now()+timedelta(seconds=5))
time.sleep(4)
print("数据有效:",conn.get("test_key").decode(encoding="utf-8"))
time.sleep(2)
if conn.get("test_key") != None:
    print(conn.get("test_key").decode(encoding="utf-8"))
else:
    print("数据过期")

输出结果:
数据有效: test_value
数据过期

 

标签:缓存,get,--,redis,过期,print,conn
From: https://www.cnblogs.com/99kol/p/17466253.html

相关文章

  • 【体验有奖】玩转 AIGC,函数计算 x 通义千问预体验,一键部署AI应用赢Airpods
    玩转AIGC,基于函数计算FC部署通义千问预体验从文字生成到图片生成,AIGC的创造力让人惊叹,更多的人开始探索如何使用AI提高生产效率,激发更多创作潜能,然而在实际应用中,AI技术的高门槛让很多人望而却步,普通开发者和零编程经验的人是否也能简单快速地部署一个AI模型应用,享受到......
  • ExcelPackage操作Excel的常用方法
    游戏开发中最常用的工具应该当属Excel了,而Excel在数据量比较大,或者多张表进行关联的时候操作比较繁琐,偶尔会有一些工具需要,减化上述的一些操作,提升工作效率。最开始想使用Node.js,发现二个问题,Github上第三方库,在保存Excel的时候会将格式给丢掉。找来找来,发现C#的Epplus比较......
  • 代理模式:为其他对象提供一种代理以控制对这个对象的访问
    代理模式是一种常见的设计模式,它允许一个对象在不改变其行为的情况下,控制对另一个对象的访问。代理模式通常用于保护敏感对象,或者为了延迟实际对象的加载。在Java中,代理模式有两种形式:静态代理和动态代理。静态代理需要手动编写代理类,而动态代理则可以在运行时自动生成代理类。......
  • python中可变对象和不可变对象
    数据类型的操作一般分为三类:1、构造操作: 这类操作主要是基于一些已知信息,产生这个类的实例对象。类似银行进行开通账户 2、解析操作:这类操作是获取对象的一些有用信息,其结果反应了对象的一些特征,但返回的不是对象本身。类似银行查询账户余额  3、变化操作:这类操作是修改......
  • Django——ORM
    Django——ORM一、模板'parentloop':外层循环'counter0':当前循环获得数据的索引,索引是从0开始计算'counter':当前循环获得数据的索引,索引是从1开始计算'revcounter':当前反向循环获得数据的索引,索引是从1开始计算'revcounter0':当前反向循环获得数据的索引,索......
  • Django——数据库
    Django——数据库django在操作数据库1、配置好要连接的数据库2、定义模型类3、迁移数据库4、使用类对象方式操作数据库数据迁移的命令pythonmanage.pymakemigrationspythonmanage.pymigrate字段的增删改classstu(models.Model):#迁移结束之后,在数据库中......
  • Django——数据库2
    Django——数据库2添加数据#添加数据#1、使用create方法#data=Students.objects.create(name='阿宸',age=26,gender='2',height=1.79)#2、直接写入数据,写入完之后,必须使用save方法保存data=Students(name='叶鹏飞',age=19,gender='2',height=1.......
  • 软件工程
    软件工程什么是软件危机?主要表现形式?如何解决软件危机?软件危机是指在计算机软件开发和维护时所遇到的一系列问题。软件危机主要包含两个方面问题:一是如何开发软件以满足社会对软件日益增长的需求;二是如何维护数量不断增长的已有软件。产生原因:(1)软件是计算机系统中的逻辑部......
  • Lombok插件
    1、简介Lombok是简化javabean开发的一款插件.在处理例如getset方法,构造器、tostring方法等可以帮助提高开发效率. 2、集成lombok(1)、idea安装lombok插件 (2)、项目集成lombok这里以spring-boot 2.3.4.RELEASE为例子,默认集成了lombok 3、实战(1)、@Data注解 ......
  • gorm的使用
    当涉及到数据库操作时,Golang中的GORM是一个非常流行的ORM(对象关系映射)库。它提供了简洁而强大的API,使得数据库操作变得更加容易和高效。在本篇技术分享文章中,我们将探讨GORM的一些核心功能和用法。安装和初始化首先,我们需要安装GORM。在终端中运行以下命令:goget-u......