当前位置: 首页 > news >正文

返利导购网站建设需求文档wordpress登录不进去

返利导购网站建设需求文档,wordpress登录不进去,网站微信认证,广西建设网电子证查询打印16-1 Redis分布式缓存引入与保存缓存功能实现 现在功能已经完成了#xff0c;但是我们还是要考虑一下性能问题#xff0c;现在任何请求都是要到数据库中查询很多的数据#xff0c;才能知道当前的用户是否有权限可以访问当前的url#xff0c;当我们的请求量很大时#xff…16-1 Redis分布式缓存引入与保存缓存功能实现 现在功能已经完成了但是我们还是要考虑一下性能问题现在任何请求都是要到数据库中查询很多的数据才能知道当前的用户是否有权限可以访问当前的url当我们的请求量很大时它对我们数据库的请求量也是非常大的这时我们就会想到对我们的权限进行缓存 这里就讲一下权限的缓存如何进行 这里使用的是redis ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd!-- 引用配置文件 --context:property-placeholder locationclasspath:redis.properties /!-- 定义连接池 --bean idjedisPoolConfig classredis.clients.jedis.JedisPoolConfig /!-- 这个bean非常重要 --bean idshardedJedisPool classredis.clients.jedis.ShardedJedisPool scopesingleton !-- 上面定义的连接池 --constructor-arg index0 refjedisPoolConfig /constructor-arg index1list !-- 连接池的信息 读取配置文件 --bean classredis.clients.jedis.JedisShardInfoconstructor-arg namehost value${redis.host}/constructor-arg nameport value${redis.port}/constructor-arg nametimeout value${redis.timeout}//bean/list/constructor-arg/bean/beans redis.host127.0.0.1 redis.port6379 redis.timeout3000 ************************************************************************************************************************************** package com.mmall.service;import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import redis.clients.jedis.ShardedJedis; import redis.clients.jedis.ShardedJedisPool;import javax.annotation.Resource;// 封装一下radis Service(redisPool)//加注释让spring来管理 Slf4j public class RedisPool {// 使用刚刚定义的spring管理的类radisResource(name shardedJedisPool)//直接调用radis了 单例的servieceprivate ShardedJedisPool shardedJedisPool;//返回单例的实例public ShardedJedis instance() {return shardedJedisPool.getResource();}//安全关闭的方法public void safeClose(ShardedJedis shardedJedis) {try {if (shardedJedis ! null) {shardedJedis.close();}} catch (Exception e) {log.error(return redis resource exception, e);}} }******************************************************************************************************************************** package com.mmall.service;import com.google.common.base.Joiner; import com.mmall.beans.CacheKeyConstants; import com.mmall.util.JsonMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import redis.clients.jedis.ShardedJedis;import javax.annotation.Resource;Service Slf4j public class SysCacheService {//引用刚定义的reaispoolResource(name redisPool)private RedisPool redisPool;/**** param toSavedValue 要保存的值* param timeoutSeconds 要保存多少秒* param prefix 前缀 自定义*/public void saveCache(String toSavedValue, int timeoutSeconds, CacheKeyConstants prefix) {//调用下面的方法saveCache(toSavedValue, timeoutSeconds, prefix, null);}//保存cachepublic void saveCache(String toSavedValue, int timeoutSeconds, CacheKeyConstants prefix, String... keys) {if (toSavedValue null) {return;}ShardedJedis shardedJedis null;//网络连接可能会有问题 try catchtry {//1.生成对应的keyString cacheKey generateCacheKey(prefix, keys);//拼接key 系统所有权限大家一样 但是单个用户权限大家不一样//2.拿到资源shardedJedis redisPool.instance();//单例获取redis//提供好的方法处理 一定要写radis 的apishardedJedis.setex(cacheKey, timeoutSeconds, toSavedValue);} catch (Exception e) {log.error(save cache exception, prefix:{}, keys:{}, prefix.name(), JsonMapper.obj2String(keys), e);} finally {//别忘了释放radisredisPool.safeClose(shardedJedis);}}//获取cache// 参数 前缀 keypublic String getFromCache(CacheKeyConstants prefix, String... keys) {ShardedJedis shardedJedis null;String cacheKey generateCacheKey(prefix, keys);//拼接key 系统所有权限大家一样 但是单个用户权限大家不一样try {shardedJedis redisPool.instance();//单例获取redisString value shardedJedis.get(cacheKey);//获取值return value;//返回值} catch (Exception e) {log.error(get from cache exception, prefix:{}, keys:{}, prefix.name(), JsonMapper.obj2String(keys), e);return null;} finally {//别忘了释放radisredisPool.safeClose(shardedJedis);}}private String generateCacheKey(CacheKeyConstants prefix, String... keys) {String key prefix.name();//多个string可以进行拼接if (keys ! null keys.length 0) {key _ Joiner.on(_).join(keys);}return key;} }package com.mmall.beans;import lombok.Getter;Getter public enum CacheKeyConstants {SYSTEM_ACLS,//缓存系统内的所有权限USER_ACLS;//缓存用户的权限}******************************************************************************************************************************** //从缓存中获取数据public ListSysAcl getCurrentUserAclListFromCache() {//userIdint userId RequestHolder.getCurrentUser().getId();//通过key获取valueString cacheValue sysCacheService.getFromCache(CacheKeyConstants.USER_ACLS, String.valueOf(userId));if (StringUtils.isBlank(cacheValue)) {//为空说明出问题了 重新获取一次ListSysAcl aclList getCurrentUserAclList();if (CollectionUtils.isNotEmpty(aclList)) {//重新保存 value 600s有效期 key的值前缀和useridsysCacheService.saveCache(JsonMapper.obj2String(aclList), 600, CacheKeyConstants.USER_ACLS, String.valueOf(userId));}return aclList;//没从cache中获取到值从数据库取出来}//缓存中有return JsonMapper.string2Obj(cacheValue, new TypeReferenceListSysAcl() {});} }******************************************************************************************************************************** 不是每个方法都要缓存的 有些必须是实时数据不就不能进行缓存 不需要进行特别多的数据访问  就不要缓存 ******************************************************************************************************************************** ******************************************************************************************************************************** ******************************************************************************************************************************** ******************************************************************************************************************************** ******************************************************************************************************************************** ********************************************************************************************************************************
http://www.yutouwan.com/news/38844/

相关文章:

  • 商务咨询公司网站制作模板网站备案是每年一次吗
  • 一般购物网站项目永久免费视频会议服务器
  • 可以做外链的网站有哪些个人备案 网站简介怎么写
  • php怎么编写网页黑帽seo
  • 自己怎么1做网站扬州做网站公司哪家好
  • 南宁网站的优化网站维修合同
  • 广西建设网站首页免费公司建站
  • 360网站制作潍坊网站空间是什么
  • 网站建设经费的函打开百度网站建设
  • 网站专门做冻品的免费咨询范围
  • 东营seo网站推广费用优秀的手机网站设计
  • 帝国怎么做中英文网站用c 做毕业设计的音乐网站
  • 傻瓜式网站开发软件公司网站内容更新怎么做
  • 江宁网站建设方案百度怎么搜索网址打开网页
  • 如何注册网站域名备案wordpress收费博客
  • 网站后台管理是做一些什么最新的网站建设软件有哪些
  • 简单企业网站源码 asp.net 公司介绍 产品展示自己做的网站收录怎么提升
  • 外贸网站建设商家做移动网站排名软件
  • p2p网站建设时间网站建设资料百度云
  • 网站手机版开发做企业网站怎么收费的
  • 国内哪家公司做网站最好网站设计软件下载
  • pageadmin做的网站的域名必须要备案吗vultr建站wordpress
  • 网站开发 开票seo优化查询
  • 网站建设策划书结束语徐州人才网最新招聘
  • 免费的创建个人网站备案网站公共查询系统
  • 做淘宝网站目的前端需要学wordpress
  • 友汇网站建设管理后台申请关闭网站
  • 长沙做网站kaodezhu微信公众号推广
  • 郑州一站式网站搭建市场营销研究生好考吗
  • 房地产网站建设与优化分析模板网站可以做备案吗