商品信息在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中的存储结构如下:
- 为每个商品创建一个唯一的Hash键:
product:1000
product:1001
product:1002
- ...
- 在每个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}- ...