写入redis中的数据为什么不见了

当Redis中写入的数据消失时,可能与它的过期策略和内存淘汰机制有关。Redis采用定期删除和惰性删除策略处理过期数据,但可能会导致内存堆积。内存淘汰机制包括noeviction、Allkeys-lru等多种方式,用于在内存不足时选择性移除key。本文还将介绍如何手写Java版的LRU算法。
摘要由CSDN通过智能技术生成

我们有时候会遇到这样的事情,当想redis写入一些数据后,再次查询发现数据不见了,这是怎么回事呢?数据明明过期了,怎么还占用着内存?

我们知道redis 主要是基于内存来进行高性能、高并发的读写操作的。然而内存是有限的,比如 redis 就只能用 10G,你要是往里面写了 20G 的数据,会咋办?当然会干掉 10G 的数据,然后就保留 10G 的数据了。那干掉哪些数据?保留哪些数据?这就要根据设置的redis的淘汰机制来选择了。

数据明明过期了,竟然还占用这内存,这些都是由 redis 的过期策略来决定。

1、redis 的过期策略

redis的过期策略包括两种,分别是定期删除和惰性删除:

定期删除:指的是 redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。(不能完全删除)

惰性删除:直接查询数据的时候,redis会先查看一些这个数据是否已经过期,如果过期,就进行删除。(不能完全删除数据)

定期删除和惰性删除都存在着一些问题,如果定期删除漏掉了很多过期 key,然后你也没及时去查,也就没走惰性删除ÿ

java flink是一个高性能的分布式流式计算框架,可以实现大规模的数据处理和分析。而hive是一个分布式数据仓库工具,可以用于存储和查询大规模的结构化数据redis是一个高性能的内存数据库,可以用于存储和检索数据。 要实现java flink读取hive表数据写入redis,我们可以按照以下步骤进行操作: 1. 在java flink,首先需要配置并连接到hive数据库。可以使用Flink的HiveCatalog来创建一个连接到Hive的catalog,并设置相关的hive metastore地址、用户名和密码等。 2. 根据需要,编写flink程序来读取hive表的数据。可以使用flink的DataStream或Table API来读取hive表数据,并将其转换为适当的数据流或表。 3. 在准备好数据之后,我们可以使用flink的RedisSink来将数据写入redis。在使用RedisSink之前,需要先引入flink-connector-redis的依赖包,并在flink配置文件配置好redis的连接参数,如redis的主机地址、端口号、密码等。 4. 编写代码将数据写入redis。可以根据数据的特点,选择将整个数据写入一个redis数据结构,或者将数据分解为多个key-value对存储到redis。 5. 在代码编写完成后,我们可以使用flink提供的命令或者IDE工具来运行flink程序,它会自动连接到hive数据库和redis,并完成数据的读取和写入。 通过以上步骤,java flink就可以实现读取hive表数据写入redis。这样可以通过flink的分布式计算和hive的数据存储能力,结合redis的高速读写能力,实现大规模数据的处理和查询。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值