当前位置: 首页 > news >正文

日租酒店公寓网站怎么做东莞网络公司排行榜

日租酒店公寓网站怎么做,东莞网络公司排行榜,吃什么补肾壮阳,网站建设要准备的内容在 Redis 中,设置了过期时间的键在过期时间到达后,并不会立即从内存中删除。如果不是,那过期后到底什么时候被删除呢? 下面对这三种删除策略进行具体分析。 立即删除: 立即删除能够保证内存数据的及时性和空间的有效…

在 Redis 中,设置了过期时间的键在过期时间到达后,并不会立即从内存中删除。如果不是,那过期后到底什么时候被删除呢?

下面对这三种删除策略进行具体分析。

立即删除:

立即删除能够保证内存数据的及时性和空间的有效利用,但在处理大量过期键时,它可能会对系统性能产生负面影响。

优点

  • 立即删除确保过期键在其过期后立即从内存中删除,这样可以确保数据的最大新鲜度,避免了过期数据继续占用内存。
  • 内存释放也是立即删除的一个重要优点,因为删除过期键会立即释放其占用的内存空间,使得系统能够更有效地管理内存。

缺点

  • 立即删除操作会占用 CPU 时间,特别是在处理大量键时或者在 CPU 负载高的情况下。这可能会对同时进行的其他计算任务(如交集计算或排序)造成额外的压力。这种情况下,Redis 可能会在处理删除操作时对其他请求的响应速度产生一定的影响,尤其是在高并发情况下。
  • Redis 使用无序链表来管理设置了过期时间的键。这意味着在执行过期键的检查和删除时,时间复杂度为 O(n),其中 n 是设置了过期时间的键的数量。尽管时间复杂度为 O(n),但通常情况下,链表中的过期键数量不会非常大,因此 Redis 的性能通常仍然能够满足大多数实际需求。

综上所述,虽然立即删除能够提供数据的最大新鲜度和内存的即时释放,但在处理大量过期键时可能会对 CPU 产生较大的负载。

惰性删除:

惰性删除是指,当一个键过期后,如果客户端尝试访问这个键,Redis 会先检查键是否过期。如果过期了,Redis 不会立即删除它,而是返回一个空值(nil)或者特定的过期标记,表示键已经过期。当有客户端访问这个键时,Redis 才会删除它并释放内存空间。

所以惰性删除的缺点很明显:浪费内存。dict字典和expires字典都要保存这个键值的信息。特别是在处理像日志这样的按时间更新的数据时,它可能会导致内存浪费问题。

定时删除(volatile-ttl):

定时删除是指,Redis 会以一定的频率(默认每秒钟检查10次)执行定期删除操作。在定期删除过程中,Redis 会扫描数据库中的部分过期键,并删除其中的过期键。这样做可以及时释放内存空间,避免过多过期键导致的内存浪费。

定时删除是一个常见的折中方案,能够有效地平衡立即删除和惰性删除所带来的问题。

这种方法通过周期性地执行删除操作来管理过期数据,具有以下几个关键优势:

  • 控制CPU消耗:定时删除可以通过限制每次删除操作执行的时长和频率,从而减少对CPU的瞬时负载影响。相比于立即删除,它在执行删除操作时分摊了处理压力,更加稳定和可控。
  • 减少内存浪费:相对于惰性删除,定时删除能够更及时地清理过期数据,从而有效减少长时间未使用的数据占用的内存空间。尤其对于存储大量日志或临时数据的场景,这种方式能显著降低内存浪费。
  • 可调节性:定时删除的执行频率和处理时长可以根据具体应用的需求进行调整。可以根据数据更新频率、过期数据的访问模式以及系统的整体负载情况来动态调整定时删除的策略,以达到最佳的性能和资源利用率。
  • 实现方式:在Redis中,可以通过定时任务(如使用Cron表达式)或者定时执行的后台任务来实现定时删除。也可以结合Redis的过期事件通知功能,使得过期数据的清理更加高效和即时。

总之,定时删除在实际应用中是一个非常有效的策略,特别适用于需要平衡CPU负载和内存利用的场景。通过合理配置删除频率和操作时长,可以最大程度地优化系统的整体性能和资源利用效率。

Redis使用的策略

Redis 使用的是一种结合了惰性删除定期删除的过期键值删除策略,这种方式旨在平衡性能和资源利用的效率。

这两种删除策略的结合,使得Redis能够在保证内存空间高效利用的同时,避免了单次大规模删除操作可能带来的性能问题。惰性删除保证了操作的即时响应性,而定期删除则定期清理已过期的键,防止过期键占用过多内存。

总结

  • 惰性删除:减少了性能开销,但可能导致内存浪费。
  • 定期删除:定期清理过期键,平衡性能和内存利用。
  • 立即删除:实时性高但性能开销大。

springboot+Redis的dome

1、引入依赖

首先,在 pom.xml 文件中添加 Spring Data Redis 的依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

2、配置 Redis

在 application.yml文件中配置 Redis 连接:

spring:data:redis:host: localhostport: 6379database: 0password: # 密码(默认为空)

3、配置 RedisTemplate

创建一个配置类来配置 RedisTemplate:

package com.example.demo.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;@Configuration
public class RedisConfig {/*** 配置 RedisTemplate* 使用 StringRedisSerializer 序列化和反序列化 redis 的 key 值* 使用 GenericJackson2JsonRedisSerializer 序列化和反序列化 redis 的 value 值** @param redisConnectionFactory Redis 连接工厂* @return 配置好的 RedisTemplate*/@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(redisConnectionFactory);// 设置 key 和 Hash 的 key 序列化器为 StringRedisSerializertemplate.setKeySerializer(new StringRedisSerializer());template.setHashKeySerializer(new StringRedisSerializer());// 设置 value 和 Hash 的 value 序列化器为 GenericJackson2JsonRedisSerializertemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());// 初始化 RedisTemplatetemplate.afterPropertiesSet();return template;}
}

4、使用 Redis 设置键的过期时间

创建一个简单的服务类来处理 Redis 操作:

package com.example.demo.service;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;import java.util.concurrent.TimeUnit;/*** Redis服务类,用于处理Redis相关的操作*/
@Service
public class RedisService {/*** RedisTemplate用于操作Redis,支持各种数据类型的存储和读取*/@Autowiredprivate RedisTemplate<String, Object> redisTemplate;/*** 设置键值对,并指定过期时间** @param key 键* @param value 值* @param timeout 过期时间* @param unit 过期时间单位*/public void setValueWithExpiration(String key, Object value, long timeout, TimeUnit unit) {redisTemplate.opsForValue().set(key, value, timeout, unit);}/*** 根据键获取值** @param key 键* @return 对应的值,如果不存在返回null*/public Object getValue(String key) {return redisTemplate.opsForValue().get(key);}/*** 删除指定键** @param key 要删除的键*/public void deleteValue(String key) {redisTemplate.delete(key);}
}

5、创建控制器来测试

创建一个简单的控制器来测试 Redis 过期键:

package com.example.demo.controller;import com.example.demo.service.RedisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.concurrent.TimeUnit;/*** Redis控制器,用于处理Redis相关的HTTP请求*/
@RestController
@RequestMapping("/redis")
public class RedisController {/*** 注入Redis服务,用于执行Redis操作*/@Autowiredprivate RedisService redisService;/*** 设置Redis键值对并指定过期时间** @param key    要设置的键* @param value  键的值* @param timeout 过期时间(秒),键将在指定秒数后自动删除* @return 响应实体,包含设置结果的信息*/@GetMapping("/set")public ResponseEntity<String> setKey(@RequestParam String key, @RequestParam String value, @RequestParam long timeout) {redisService.setValueWithExpiration(key, value, timeout, TimeUnit.SECONDS);return ResponseEntity.ok("键已设置,并将于 " + timeout + " 秒后过期");}/*** 获取Redis中的键值** @param key 要获取的键* @return 响应实体,包含键的值或相应提示信息*/@GetMapping("/get")public ResponseEntity<Object> getKey(@RequestParam String key) {Object value = redisService.getValue(key);if (value == null) {return ResponseEntity.ok("键不存在或已过期");}return ResponseEntity.ok(value);}/*** 删除Redis中的键** @param key 要删除的键* @return 响应实体,包含删除结果的信息*/@GetMapping("/delete")public ResponseEntity<String> deleteKey(@RequestParam String key) {redisService.deleteValue(key);return ResponseEntity.ok("键已删除");}
}

6、测试应用程序

启动 Spring Boot 应用程序,并通过以下 URL 测试 Redis 过期键:

设置键并指定过期时间(例如 10 秒):http://localhost:8080/redis/set?key=testKey&value=testValue&timeout=10

  • 响应: "键已设置,并将于 10 秒后过期"

获取键的值:http://localhost:8080/redis/get?key=testKey

  • 如果键存在: 返回键的值
  • 如果键不存在或已过期: "键不存在或已过期"

删除键:http://localhost:8080/redis/delete?key=testKey

  • 响应: "键已删除"

文章转载自:
http://dinncowhiten.stkw.cn
http://dinncowindflower.stkw.cn
http://dinncodelphinium.stkw.cn
http://dinncobailiff.stkw.cn
http://dinncoburden.stkw.cn
http://dinncowertherian.stkw.cn
http://dinncorebuff.stkw.cn
http://dinncocytologist.stkw.cn
http://dinncostencil.stkw.cn
http://dinncobarology.stkw.cn
http://dinncoandragogy.stkw.cn
http://dinncobsd.stkw.cn
http://dinncofabrication.stkw.cn
http://dinncosentry.stkw.cn
http://dinncoectrodactylous.stkw.cn
http://dinncogiblets.stkw.cn
http://dinncotextured.stkw.cn
http://dinncohygrometer.stkw.cn
http://dinncodtp.stkw.cn
http://dinncofreeway.stkw.cn
http://dinncolak.stkw.cn
http://dinncotetraspermous.stkw.cn
http://dinncochemiluminescnet.stkw.cn
http://dinncosynostosis.stkw.cn
http://dinncoswatch.stkw.cn
http://dinncocassowary.stkw.cn
http://dinncoretroengine.stkw.cn
http://dinncobarbadian.stkw.cn
http://dinncocreak.stkw.cn
http://dinncogangrel.stkw.cn
http://dinncocountrywoman.stkw.cn
http://dinncofao.stkw.cn
http://dinncobathwater.stkw.cn
http://dinnconinepins.stkw.cn
http://dinncotwu.stkw.cn
http://dinncobottleneck.stkw.cn
http://dinncogooral.stkw.cn
http://dinncoelectrotonus.stkw.cn
http://dinncofacade.stkw.cn
http://dinncoozonometer.stkw.cn
http://dinncodowntime.stkw.cn
http://dinncopiperidine.stkw.cn
http://dinncoprocurer.stkw.cn
http://dinncoanglo.stkw.cn
http://dinncomongline.stkw.cn
http://dinncononzero.stkw.cn
http://dinncovugular.stkw.cn
http://dinncobasting.stkw.cn
http://dinncolakeshore.stkw.cn
http://dinncooutdare.stkw.cn
http://dinncovdc.stkw.cn
http://dinncoponiard.stkw.cn
http://dinncosongcraft.stkw.cn
http://dinncoprefixal.stkw.cn
http://dinncotarboard.stkw.cn
http://dinncoirreparability.stkw.cn
http://dinncomistreat.stkw.cn
http://dinncospivvery.stkw.cn
http://dinncosyncrisis.stkw.cn
http://dinncomythopoeia.stkw.cn
http://dinncochickenlivered.stkw.cn
http://dinncolinz.stkw.cn
http://dinncoshutt.stkw.cn
http://dinncomelting.stkw.cn
http://dinncoqueer.stkw.cn
http://dinncorattlebrain.stkw.cn
http://dinncoscintiscan.stkw.cn
http://dinncoshouldna.stkw.cn
http://dinncoleakage.stkw.cn
http://dinncolipotropic.stkw.cn
http://dinnconritya.stkw.cn
http://dinncosulfonmethane.stkw.cn
http://dinncocomponent.stkw.cn
http://dinncolecithoid.stkw.cn
http://dinncohookey.stkw.cn
http://dinncobeltman.stkw.cn
http://dinncoagrestic.stkw.cn
http://dinncosilicle.stkw.cn
http://dinncoearthfall.stkw.cn
http://dinncopeevy.stkw.cn
http://dinncobackhander.stkw.cn
http://dinncodeplumation.stkw.cn
http://dinncocancellate.stkw.cn
http://dinncoadopter.stkw.cn
http://dinncosemiconscious.stkw.cn
http://dinncolenient.stkw.cn
http://dinncointron.stkw.cn
http://dinncocome.stkw.cn
http://dinncoacquainted.stkw.cn
http://dinncobiunique.stkw.cn
http://dinncomanado.stkw.cn
http://dinncopumper.stkw.cn
http://dinncodescriptive.stkw.cn
http://dinncoprebiotic.stkw.cn
http://dinncoswacked.stkw.cn
http://dinncocroatian.stkw.cn
http://dinncomizzle.stkw.cn
http://dinncoaccount.stkw.cn
http://dinncosuburbicarian.stkw.cn
http://dinnconajd.stkw.cn
http://www.dinnco.com/news/96703.html

相关文章:

  • 专业公司做网站seo推广培训费用
  • 英文版wordpress安装seo云优化软件
  • 微信开放平台注册流程seo推广百度百科
  • 子目录创建网站seo快速排名的方法
  • 网站无法上传照片seo网站推广怎么做
  • 有赞微商城官网登录优化生育政策
  • 家具网站首页设计互联网营销是做什么的
  • 下载做网站的软件免费b2b平台推广
  • 温州 做网站软件推广怎么做
  • 如何在百度网站收录提交入口免费友情链接
  • 网站导航设计欣赏关键词首页排名优化平台
  • php动态网站开发概述seo有哪些优缺点?
  • 专用主机网站建设今日热点新闻头条
  • 做网页的工具百度seo优化及推广
  • 哈尔滨建站模板厂家友情链接查询
  • 建设网站的虚拟主机在哪里买微信朋友圈广告代理
  • 佳木斯建设局网站万网创始人
  • dz网站首页html代码在哪惠城网站设计
  • 手机交互网站互联网推广运营是做什么的
  • 58同城会员网站怎么做江西seo推广软件
  • 企业做网站和宣传册的作用线上推广费用
  • 网站做加qq群链接地址cpm广告联盟平台
  • 昆明网站建设优化技术营销策略4p分析怎么写
  • 网站建设文化服务公司中国新闻网发稿
  • 购物网站的建立seo培训
  • 旅游网站排名相关推荐网络推广策划书
  • 商丘做网站多少钱一站式网络营销
  • 网站怎么做切换图片长沙官网seo收费
  • 网站设计论文答辩问题及答案百度秒收录软件工具
  • 超值的网站建设拉新推广平台有哪些