redis(hash)使用场景
2026/4/17 2:01:16 网站建设 项目流程

redis(hash)使用场景

1.‌用户信息存储

@ServicepublicclassUserInfoService{@AutowiredprivateRedisTemplate<String,Object>redisTemplate;/** * 保存完整用户信息 */publicvoidsaveUserInfo(StringuserId,Map<String,Object>userInfo){HashOperations<String,String,Object>hashOps=redisTemplate.opsForHash();hashOps.putAll("user:"+userId,userInfo);}/** * 获取完整用户信息 */publicMap<Object,Object>getUserInfo(StringuserId){HashOperations<String,String,Object>hashOps=redisTemplate.opsForHash();returnhashOps.entries("user:"+userId);}/** * 更新用户单个字段 */publicvoidupdateUserField(StringuserId,Stringfield,Objectvalue){HashOperations<String,String,Object>hashOps=redisTemplate.opsForHash();hashOps.put("user:"+userId,field,value);}/** * 获取用户特定字段值 */publicObjectgetUserField(StringuserId,Stringfield){HashOperations<String,String,Object>hashOps=redisTemplate.opsForHash();returnhashOps.get("user:"+userId,field);}/** * 删除用户特定字段 */publicvoiddeleteUserField(StringuserId,Stringfield){HashOperations<String,String,Object>hashOps=redisTemplate.opsForHash();hashOps.delete("user:"+userId,field);}/** * 检查用户字段是否存在 */publicbooleanhasUserField(StringuserId,Stringfield){HashOperations<String,String,Object>hashOps=redisTemplate.opsForHash();returnhashOps.hasKey("user:"+userId,field);}/** * 获取用户所有字段名 */publicSet<Object>getAllUserFields(StringuserId){HashOperations<String,String,Object>hashOps=redisTemplate.opsForHash();returnhashOps.keys("user:"+userId);}/** * 获取用户字段数量 */publicLonggetUserFieldCount(StringuserId){HashOperations<String,String,Object>hashOps=redisTemplate.opsForHash();returnhashOps.size("user:"+userId);}}

2.商品信息缓存

@ServicepublicclassProductCacheService{@AutowiredprivateRedisTemplate<String,Object>redisTemplate;/** * 缓存商品详细信息 */publicvoidcacheProductInfo(StringproductId,Map<String,Object>productInfo){redisTemplate.opsForHash().putAll("product:"+productId,productInfo);// 设置过期时间(24小时)redisTemplate.expire("product:"+productId,24,TimeUnit.HOURS);}/** * 获取缓存的商品信息 */publicMap<Object,Object>getCachedProductInfo(StringproductId){returnredisTemplate.opsForHash().entries("product:"+productId);}/** * 更新商品价格 */publicvoidupdateProductPrice(StringproductId,doubleprice){redisTemplate.opsForHash().put("product:"+productId,"price",price);}/** * 更新商品库存 */publicvoidupdateProductStock(StringproductId,intstock){redisTemplate.opsForHash().put("product:"+productId,"stock",stock);}/** * 批量更新商品字段 */publicvoidbatchUpdateProductFields(StringproductId,Map<String,Object>updates){HashOperations<String,String,Object>hashOps=redisTemplate.opsForHash();hashOps.putAll("product:"+productId,updates);}/** * 获取所有商品ID */publicSet<Object>getAllProductIds(){returnredisTemplate.keys("product:*");}/** * 删除商品缓存 */publicvoiddeleteProductCache(StringproductId){redisTemplate.delete("product:"+productId);}}

3.购物车实现

@ServicepublicclassShoppingCartService{@AutowiredprivateRedisTemplate<String,Object>redisTemplate;/** * 添加商品到购物车 */publicvoidaddToCart(StringuserId,StringproductId,intquantity){StringcartKey="cart:"+userId;redisTemplate.opsForHash().put(cartKey,productId,quantity);}/** * 从购物车移除商品 */publicvoidremoveFromCart(StringuserId,StringproductId){StringcartKey="cart:"+userId;redisTemplate.opsForHash().delete(cartKey,productId);}/** * 更新购物车商品数量 */publicvoidupdateCartItemQuantity(StringuserId,StringproductId,intquantity){StringcartKey="cart:"+userId;redisTemplate.opsForHash().put(cartKey,productId,quantity);}/** * 获取购物车所有商品 */publicMap<Object,Object>getCartItems(StringuserId){StringcartKey="cart:"+userId;returnredisTemplate.opsForHash().entries(cartKey);}/** * 清空购物车 */publicvoidclearCart(StringuserId){StringcartKey="cart:"+userId;redisTemplate.delete(cartKey);}/** * 获取购物车商品数量 */publicLonggetCartItemCount(StringuserId){StringcartKey="cart:"+userId;returnredisTemplate.opsForHash().size(cartKey);}/** * 检查购物车是否包含某商品 */publicbooleancartContainsProduct(StringuserId,StringproductId){StringcartKey="cart:"+userId;returnredisTemplate.opsForHash().hasKey(cartKey,productId);}}

4.计数器集合

@ServicepublicclassCounterService{@AutowiredprivateRedisTemplate<String,Object>redisTemplate;/** * 原子性增加计数器 */publicLongincrementCounter(Stringkey,Stringfield,longdelta){returnredisTemplate.opsForHash().increment(key,field,delta);}/** * 设置计数器初始值 */publicvoidsetCounterValue(Stringkey,Stringfield,longvalue){redisTemplate.opsForHash().put(key,field,value);}/** * 获取计数器值 */publicLonggetCounterValue(Stringkey,Stringfield){Objectvalue=redisTemplate.opsForHash().get(key,field);returnvalue!=null?Long.parseLong(value.toString()):0;}/** * 批量增加多个计数器 */publicvoidbatchIncrementCounters(Stringkey,Map<String,Long>increments){HashOperations<String,String,Object>hashOps=redisTemplate.opsForHash();for(Map.Entry<String,Long>entry:increments.entrySet()){hashOps.increment(key,entry.getKey(),entry.getValue());}}/** * 获取所有计数器值 */publicMap<Object,Object>getAllCounterValues(Stringkey){returnredisTemplate.opsForHash().entries(key);}}

5.配置信息存储

@ServicepublicclassConfigService{@AutowiredprivateRedisTemplate<String,Object>redisTemplate;/** * 保存系统配置 */publicvoidsaveConfig(StringconfigKey,Map<String,Object>config){redisTemplate.opsForHash().putAll(configKey,config);}/** * 获取配置值 */publicObjectgetConfigValue(StringconfigKey,Stringfield){returnredisTemplate.opsForHash().get(configKey,field);}/** * 更新配置字段 */publicvoidupdateConfigField(StringconfigKey,Stringfield,Objectvalue){redisTemplate.opsForHash().put(configKey,field,value);}/** * 删除配置字段 */publicvoiddeleteConfigField(StringconfigKey,Stringfield){redisTemplate.opsForHash().delete(configKey,field);}/** * 获取所有配置字段 */publicSet<Object>getAllConfigFields(StringconfigKey){returnredisTemplate.opsForHash().keys(configKey);}/** * 检查配置字段是否存在 */publicbooleanhasConfigField(StringconfigKey,Stringfield){returnredisTemplate.opsForHash().hasKey(configKey,field);}/** * 批量更新配置 */publicvoidbatchUpdateConfig(StringconfigKey,Map<String,Object>updates){HashOperations<String,String,Object>hashOps=redisTemplate.opsForHash();hashOps.putAll(configKey,updates);}}

6.批量操作

@ServicepublicclassBatchOperationService{@AutowiredprivateRedisTemplate<String,Object>redisTemplate;/** * 批量设置多个字段 */publicvoidbatchSetFields(Stringkey,Map<String,Object>fields){HashOperations<String,String,Object>hashOps=redisTemplate.opsForHash();hashOps.putAll(key,fields);}/** * 批量获取多个字段值 */publicMap<String,Object>batchGetFields(Stringkey,Set<String>fields){HashOperations<String,String,Object>hashOps=redisTemplate.opsForHash());returnhashOps.multiGet(key,fields);}/** * 批量删除多个字段 */publicvoidbatchDeleteFields(Stringkey,Set<String>fields){HashOperations<String,String,Object>hashOps=redisTemplate.opsForHash());for(Stringfield:fields){hashOps.delete(key,field);}}/** * 批量检查字段存在性 */publicMap<String,Boolean>batchCheckFields(Stringkey,Set<String>fields){HashOperations<String,String,Object>hashOps=redisTemplate.opsForHash());Map<String,Boolean>results=newHashMap<>();for(Stringfield:fields){results.put(field,hashOps.hasKey(key,field);}returnresults;}}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询