商品信息在redis中使用Hash结构进行缓存

2024-08-30 23:06:45 浏览数 (1)

商品信息在redis中使用Hash结构进行缓存

简介:在商城里面,推荐使用redis的Hash结构缓存商品信息。

下面代码演示怎么使用redis中的Hash结构,缓存商品的信息。

代码语言:xml复制
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.6.0</version>
</dependency>

下面是对应的java代码:

代码语言:java复制
import redis.clients.jedis.Jedis;

public class RedisProductCache {
    private final Jedis jedis;

    public RedisProductCache(String host, int port) {
        jedis = new Jedis(host, port);
    }

    // 缓存商品信息到Redis的Hash中
    public void cacheProduct(String id, String name, double price, int库存) {
        String hashKey = "product:"   id;
        jedis.hset(hashKey, "name", name);
        jedis.hset(hashKey, "price", String.valueOf(price));
        jedis.hset(hashKey, "inventory", String.valueOf(库存));
    }

    // 从Redis的Hash中获取商品信息
    public String getProductDetails(String id) {
        String hashKey = "product:"   id;
        String name = jedis.hget(hashKey, "name");
        String price = jedis.hget(hashKey, "price");
        String inventory = jedis.hget(hashKey, "inventory");

        return "Name: "   name   ", Price: "   price   ", Inventory: "   inventory;
    }

    // 关闭连接
    public void close() {
        jedis.close();
    }

    public static void main(String[] args) {
        RedisProductCache redisProductCache = new RedisProductCache("localhost", 6379);

        // 缓存商品信息
        redisProductCache.cacheProduct("1001", "智能手环", 299.99, 100);

        // 从Redis获取商品信息
        String productDetails = redisProductCache.getProductDetails("1001");
        System.out.println(productDetails);

        // 关闭Redis连接
        redisProductCache.close();
    }
}

在这个示例中,定义了一个RedisProductCache类,它使用Jedis客户端与Redis服务器进行交互。cacheProduct方法将商品信息存储到Redis的Hash中,而getProductDetails方法则从Redis的Hash中检索商品信息。

Redis中存储的结构如下:

代码语言:java复制
product:1001 => {
  "name": "智能手环",
  "price": "299.99",
  "inventory": "100"
}

很多商品使用redis进行缓存,在redis中的存储结构如下:

  1. 为每个商品创建一个唯一的Hash键
    • product:1000
    • product:1001
    • product:1002
    • ...
  2. 在每个Hash中存储商品的详细信息
    • product:1000 => {"name": "商品A", "price": 100.0, "inventory": 50}
    • product:1001 => {"name": "商品B", "price": 200.0, "inventory": 30}
    • product:1002 => {"name": "商品C", "price": 150.0, "inventory": 80}
    • ...

0 人点赞