添加缓存实例

@Service
public class ItemServiceImpl implements ItemService {

@Autowired
private TbItemMapper itemMapper;
@Value("${REDIS_ITEM_KEY}")
private String REDIS_ITEM_KEY;
@Value("${REDIS_ITEM_EXPIRE}")
private Integer REDIS_ITEM_EXPIRE;

@Autowired
private JedisClient jedisClient;

@Override
public TaotaoResult getItemBaseInfo(long itemId) {
try {
//添加缓存逻辑
//从缓存中取商品信息,商品id对应的信息
String json = jedisClient.get(REDIS_ITEM_KEY + ":" + itemId + ":base");
//判断是否有值
if (!StringUtils.isBlank(json)) {
//把json转换成java对象
TbItem item = JsonUtils.jsonToPojo(json, TbItem.class);
return TaotaoResult.ok(item);
}

} catch (Exception e) {
e.printStackTrace();
}

//根据商品id查询商品信息
TbItem item = itemMapper.selectByPrimaryKey(itemId);
//使用TaotaoResult包装一下
try {
//把商品信息写入缓存
jedisClient.set(REDIS_ITEM_KEY + ":" + itemId + ":base", JsonUtils.objectToJson(item));
//设置key的有效期
jedisClient.expire(REDIS_ITEM_KEY + ":" + itemId + ":base", REDIS_ITEM_EXPIRE);
} catch (Exception e) {
e.printStackTrace();
}
return TaotaoResult.ok(item);
}

}

时间: 2024-07-28 15:06:34

添加缓存实例的相关文章

jQuery清除缓存实例代码

jQuery清除缓存实例代码:缓存是个好东西,但是有些情况下则会出现一些麻烦,比如验证码不能刷新等等,尤其是在IE浏览器下面,本章节就简单介绍一下如何清除缓存以避免一些不必要的困扰,解决方案一:使用ajax方法的时候可以设置cache的参数为false.代码如下: $.ajaxSetup ({ cache: false }); $(fucntion({ $.ajaxSetup ({ cache: false }); })) 特别说明:不能够设置为全局的.解决方案二:在请求的链接后面添加随机数,比

读写锁ReadWriteLock和缓存实例

读写锁:多个读锁不互斥,读锁与些锁互斥,写锁与写锁互斥.即:读的时候不允许写,写的时候不允许读,可以同时读. synchronized关键字和普通的Lock构造的锁,会造成读与读之间的互斥,因此读写锁可提高性能. 例子1:三个线程同时对一个共享数据进行读写. import java.util.Random; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantRea

MySQL系列之D-2------MySQL多实例添加一个实例

D-2.1   添加一个实例(3309实例) D-2.1.1.创建目录 # cd /data # mkdir 3309/data D-2.1.2.创建my.cnf文件在/data/3309 [client] port=3309 socket=/data/3309/mysql.sock prompt=\\[email protected] \\r:\\m:\\s-> [mysqld] basedir =/mysql datadir =/data/3309/data port =3309 serve

初学C#和MVC的一些心得,弯路,总结,还有教训(4)--Cache 关于创建多个缓存实例

asp.net中的数据缓存可以用 HttpRuntime.Cache ,这个是大家都知道的,但如果缓存的数据比较多,又比较杂乱,想要把缓存分开管理(也就是创建多个缓存实例)应该怎么做呢... 于是常规做法来了 using System.Web.Caching; public static class MyCache { public static Cache cache = new Cache(); } 不用说也知道,肯定跑不起来,不然也不会有这篇文章了,使用的时候对新建的 MyCache.ca

ThinkPHP中F方法快速缓存实例

一般使用文件方式的缓存就能够满足要求,而thinkPHP还提供了一个专门用于文件方式的快速缓存方法F方法. 由于采用的是PHP返回方式,所以其效率较S方法较高.F方法具有如下特点:1.简单数据缓存:2.文件形式保存:3.采用PHP返回数据方式加载缓存:4.支持子目录缓存以及自动创建:5.支持删除缓存和批量删除:$path="../Public/Runtime/";$str="fastrunaaaaaaaaaaaaaaaa";F("str/ffun"

【Web】Yslow优化法则(三)添加缓存控制首部

添加Expires和Cache-control头部 Expires和Cache-control实际上是HTTP中的缓存控制头部,它主要影响客户端的请求行为和服务器端的响应. 本文的许多内容来自<HTTP权威指南>,如有任何问题,欢迎指出. 一.缓存的基本概念 这里的缓存,单指web的缓存.当web请求抵达缓存时,如果本地有缓存的副本且缓存未过期,那么就可以从本地读取数据或文档,这样便可以: 1.        减少冗余的数据传输,一定程度上减少服务器的流量和压力. 2.        缓解了网

为应用程序添加缓存

服务端添加缓存 1. 背景 由于项目进度赶得比较紧,而且第一次自己设计系统的架构,刚开始考虑的并不完全,主要想着先把系统的功能实现了再说.因此刚开始设计系统的时候并没有考虑缓存的问题,但是对已一个web系统,缓存不仅可以大大的减少数据库的压力,也可以很大程度的提高系统的响应时间.现在系统的功能完成的基本差不多了,因此现在需要为系统添加缓存,但是由于系统功能已经完成的差不多了,代码写的也很多了,所以现在添加缓存确实显得比较困难了. 先说说我们当前系统的整体框架结构吧. 从图中可以清楚的看出,我们目

使用代理模式来给交易模块添加缓存功能

这篇文章里面,我们通过给交易模块模拟一个缓存功能,来记录代理模式的使用过程: 静态代理 静态代理主要是通过实现接口来完成,类图结构如下: 这种方式比较简单,代理类和业务类都实现同一个接口,代理类中重写一个入参类型和接口保持一致的构造函数,并在接口的实现方法中实现代理功能,具体代码我们通过改造订单模块来演示: //新建一个ICahe接口,让IOrder接口继承ICache接口 public interface ICache { public void cacheData(); } 改造OrderS

Redis整合Spring结合使用缓存实例

摘要:本文介绍了如何在Spring中配置redis,并通过Spring中AOP的思想,将缓存的方法切入到有需要进入缓存的类或方法前面. 一.Redis介绍 什么是Redis? redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set –有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作