上一篇我们完成了jedis的配置,接下来看一下jedis在Springboot中的使用。
首先重新写一下自己项目的Dao文件(service),比如我的项目,UerBean有三个属性,手机号码(telephoneNUmber),密码(password),还有一个就是建立table的时候自动生成的表的唯一标识,uuid。
首先,原来的Dao文件存在着UserDao.java 文件,里面的findUUidByTelephoneNumber 方法,(通过手机号码获得uuid)
public String findUuidByTelephoneNumber(String telephoneNumber) { return (String ) sessionFactory.getCurrentSession().createQuery("select uuid from UserBean where telephoneNumber= :telephoneNumber") .setParameter("telephoneNumber", telephoneNumber) .uniqueResult(); }
利用jedis来重新写一个class,UserDao_Redis.java
public String findUuidByTelephoneNumber(String telephoneNumber) { String key = "User_uuidByTelephone" + telephoneNumber;//前面加入一个前缀,辨认性更强 String result; try { shardedJedis = shardedJedisPool.getResource();//在缓存池里取出缓存 result = shardedJedis.get(key); if (result == null) { userDao.findUuidByTelephoneNumber(telephoneNumber); writeEntryToCacheAndSetExpire(key, result);//在下面后有代码介绍 } } catch (Exception e) { e.printStackTrace(); throw new IllegalStateException(); } finally { if (shardedJedis != null) shardedJedis.close();//记得最后使用完了要关闭幺 } return result; }注释:使用try {}catch(){}是确保程序能够运行,
finally{}确保shardedjedis能够返回缓存池(这里并不是吧它给关闭了)详细的可以看一下《Redis的开发和运维》这一本书的java客户端-Jedis(4章2节)
接下来就是writeEntryToCacheAndSetExpire 方法了,顾名思义没就是写一个缓存的入口和设置过期时间。
public void writeEntryToCacheAndSetExpire(String key, String value){ shardedJedis.set(key, value); shardedJedis.expire(key, jedisKeyExpireAfterSecond); }
还有就是在整个xxDao_Redis.java 下加入他丫,
@Value("${jedis.key.expireAfterSeconds}") private int jedisKeyExpireAfterSecond;
还有就是常识性的问题:别忘了@Autowired 注入shardedJedispool 呀!
最后,就是Controller层面的代码了,这个没有什么可以讲的,就是把之前的在xxxDao.java的调用方法改为xxxDao_Redis.java的调用方法就好了。
大功告成,赶紧是一下吧