MST
星途 面试题库

面试题:缓存设计之缓存数据过期机制的基本实现

在后端开发中,假设使用Redis作为缓存,描述如何简单实现一个缓存数据过期机制,让缓存数据在指定时间后失效。请给出相关代码示例(语言不限)。
40.1万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试

以Python为例,使用redis - py库实现缓存数据过期机制的示例如下:

import redis

# 连接Redis
r = redis.Redis(host='localhost', port=6379, db = 0)

# 设置缓存数据及过期时间(单位:秒)
key = 'example_key'
value = 'example_value'
expire_time = 60  # 60秒后过期
r.setex(key, expire_time, value)

# 获取缓存数据
result = r.get(key)
print(result)

在上述代码中:

  1. redis.Redis用于连接本地Redis服务器。
  2. setex方法用于设置缓存键值对,并指定过期时间(以秒为单位)。
  3. get方法用于获取缓存数据。

在Java中,使用Jedis库实现的示例如下:

import redis.clients.jedis.Jedis;

public class RedisExample {
    public static void main(String[] args) {
        // 连接Redis
        Jedis jedis = new Jedis("localhost", 6379);

        String key = "example_key";
        String value = "example_value";
        int expireTime = 60; // 60秒后过期

        // 设置缓存数据及过期时间
        jedis.setex(key.getBytes(), expireTime, value.getBytes());

        // 获取缓存数据
        byte[] result = jedis.get(key.getBytes());
        System.out.println(new String(result));

        jedis.close();
    }
}

在上述Java代码中:

  1. Jedis类用于连接Redis服务器。
  2. setex方法设置缓存键值对和过期时间。
  3. get方法获取缓存数据。最后关闭Jedis连接。

在JavaScript中,使用ioredis库实现的示例如下:

const Redis = require('ioredis');

// 连接Redis
const redis = new Redis({
    host: 'localhost',
    port: 6379
});

const key = 'example_key';
const value = 'example_value';
const expireTime = 60; // 60秒后过期

// 设置缓存数据及过期时间
redis.setex(key, expireTime, value)
   .then(() => {
        return redis.get(key);
    })
   .then(result => {
        console.log(result);
    })
   .catch(console.error);

在上述JavaScript代码中:

  1. ioredis库用于连接Redis。
  2. setex方法设置缓存键值对和过期时间。
  3. get方法获取缓存数据,并通过Promise处理结果。