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

太原做网站页面的南宁网站seo排名优化

太原做网站页面的,南宁网站seo排名优化,闸北企业网站制作,公明做网站Redis的学习专栏:http://t.csdnimg.cn/a8cvV 许多应用都会使用Redis作为计数的基本工具,可以实现快速计数、查询缓存的功能,同时数据也可以异步处理。例如:博客浏览,用户每查看一次,就会增加一次的访问量&a…

 

Redis的学习专栏:http://t.csdnimg.cn/a8cvV

        许多应用都会使用Redis作为计数的基本工具,可以实现快速计数、查询缓存的功能,同时数据也可以异步处理。例如:博客浏览,用户每查看一次,就会增加一次的访问量;手机验证码,一分钟之内只能发送一次!

普通的计数器,有很多bug,比如:访问量计数方式呢?阅读程度呢?总不可能一刷新就增加一次吧!

解决方法:在规定时间内一个用户,不能超过规定只能访问一次。而这种情况,我们可以先将数据存储在主存里,然后同步到数据库当中。

方法:

  1. 先初始化一下RedisTemplate,这个是操作redis的第三方库,我们先要对他初始化一下(重新序列化)
    @Autowiredprivate StringRedisTemplate stringRedisTemplate;@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(connectionFactory);redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(new StringRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());// 这个地方不可使用 json 序列化,如果使用的是ObjectRecord传输对象时,可能会有问题,会出现一个 java.lang.IllegalArgumentException: Value must not be null! 错误redisTemplate.setHashValueSerializer(RedisSerializer.string());return redisTemplate;}
}

        2.访问

 /*** 利用redis做计数器* 可以处理业务上面的的一些访问次数之类的* 例如:文章的点赞数,阅读量,允许有一点的延迟效果,先保存到redis中,然后在同步到数据库当中*/@RequestMapping("hello")public void count() {/*** 判断是否到达次数*/Boolean aBoolean = invokeExceededTimes("time_key2",1,3);if (aBoolean) {LOGGER.info("可以访问");}else {LOGGER.info("请求次数达标了");}}/*** 判断同一个key在规定时间内访问次数是否到达了最高值* @param key   键* @param days  时间* @param count 一定时间内的访问次数* @return*/public Boolean invokeExceededTimes(String key, int days, int count) {LOGGER.info("key值:{}",key);// 判断在redis中是否有key值Boolean redisKey = stringRedisTemplate.hasKey(key);if (redisKey) {// 获取key所对应的valueInteger hasKey =Integer.parseInt((String)stringRedisTemplate.opsForValue().get(key));if (hasKey >= count) {return false;}// 对value进行加1操作stringRedisTemplate.opsForValue().increment(key,1);return true;}else {// 如果没有key值,对他进行添加到redis中stringRedisTemplate.opsForValue().set(key,"1",days,TimeUnit.DAYS);}return true;}

        我们设置每一个Redis当中的KEY值,如果KEY当中的值超过固定次数,则不会再自增了,而一旦过了存活时间之后就可以再次访问了。

RedisTemplate 常用方法

Boolean expire(K key, final long timeout, final TimeUnit unit)    为指定的 key 指定缓存失效时间。时间一到 key 会被移除。key 不存在时,不影响
Boolean expireAt(K key, final Date date) 设置 key 失效日期。注意:如果 key 后续被重新设置值,比如 set key value,则 key 过期时间失效,需要重新设置。
Long getExpire(K key) 获取 key 的剩余过期时间。 -1 表示永久有效。-2 表示 key 不存在。
Long getExpire(K key, final TimeUnit timeUnit)  获取 key 的剩余过期时间,并换算成指定的时间单位 
Boolean hasKey(K key)   判断 key 是否存在
Boolean delete(K key)   删除指定的 key
Long delete(Collection keys)   删除多个 key
RedisSerializer<?> getDefaultSerializer() 
获取默认的序列化方式。RedisTemplate 是 JdkSerializationRedisSerializer;
Set keys(K pattern)   获取整个库下符合指定正则的所有 key,如 keys(*) 获取所有 key
Boolean move(K key, final int dbIndex)将 key 从当前库移动目标库 dbIndex
ClusterOperations<K, V> opsForCluster() 获取 ClusterOperations 用于操作集群
GeoOperations<K, V> opsForGeo() 获取 GeoOperations 用于操作地图
redisTemplate.getConnectionFactory().getConnection().flushAll();//清空 redis 所有数据库(all databases)中的所有数据(all keys)
redisTemplate.getConnectionFactory().getConnection().flushDb();清空 redis 当前连接的数据库(selected database)中的所有数据(all keys)

 还有很多很多方法,需要时再去找、使用。

http://www.hengruixuexiao.com/news/52362.html

相关文章:

  • 搭建网站上传文件快速排名优化公司
  • 杭州建设网页西安关键词seo
  • 网站建设是广告么品牌营销策划包括哪些内容
  • 南宁如何做百度的网站推广深圳网站建设维护
  • 廊坊cms建站模板手机优化器
  • 营销网站建设专业团队在线服务谷歌关键词分析工具
  • 域名就是网站名吗nba哈登最新消息
  • 滨州网站建设报价友情链接交换的意义是什么
  • 做视频网站弹窗太原整站优化排名外包
  • 电子商务网站策划书模板关键词列表
  • 商业空间设计心得体会seo短视频网页入口营销
  • 网站开发部组织架构网站建设软件
  • 简单网站建设规划方案如何在百度提交网站
  • 成都网站建设 城杭州seo工作室
  • 贵州住房和城乡建设局网站公司企业网站模板
  • 网站改版建议策划书赛事资讯赛马资料
  • 公众号链接转wordpress安徽百度seo公司
  • 网站开发培训学校恶意点击竞价是用的什么软件
  • 洱源网站建设个人网站源码免费下载
  • 专业做网站广州最近热搜新闻事件
  • 水利网站建设百度网盘人工申诉电话
  • 网站建设移动端官网广州抖音seo
  • 咨询行业网站建设公司东方网络律师团队
  • 香港做一楼一凤的网站合法吗免费seo优化工具
  • 做职业背景调查的网站qq引流推广软件哪个好
  • 企业怎么做网站zac博客seo
  • 家用电脑做网站能备案做百度seo
  • 网站设计 教程怎么做市场推广
  • 洛阳建设厅网站高端网站建设专业公司
  • 不备案怎么做淘宝客网站吗自动连点器