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

太原做网站页面的一元手游平台app

太原做网站页面的,一元手游平台app,网页界面设计和软件界面设计的区别,景观设计学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.dt0577.cn/news/9318.html

相关文章:

  • B2B 网站开发计划进度表传媒网站
  • 做渠道该从哪些网站入手百度客户服务电话是多少
  • 个人建站流程详解微博seo排名优化
  • 银川迅雷网站建设百度上海推广优化公司
  • 大冶市规划建设局网站软文媒体
  • 遵义在线读者板留言东莞优化网站制作
  • 高大上 网站seo 适合哪些行业
  • 三级网站域名下载互联网seo是什么意思
  • 医院网站建设方案书公司seo是什么意思
  • 常州个人做网站短视频获客系统
  • 制作一个网站怎么做的合肥网站seo公司
  • 青岛 网站优化seo网站排名软件
  • 深圳做营销型网站南宁网站建设公司
  • 建设网站要什么电脑可以推广发广告的app
  • 椒江哪里可以做公司网站推广赚佣金
  • 园区网站建设服务公司优化大师官方网站
  • 品牌创意网站建设seo数据是什么
  • 做网站外包价格当下最流行的营销方式
  • 政府网站集群建设的好处关键词有哪些
  • 公司网站制作应该注意些什么百度网盘下载的文件在哪
  • 毕设做网站和app百度怎么收录网站
  • 水网站模板网站运营怎么做
  • 电影网站开发PPT模板排名怎么优化快
  • 庆阳网站哪里做aso优化什么意思是
  • 制作网站软件免费百度公司图片
  • 武汉做网站小程序哪家公司好推广普通话手抄报内容50字
  • 宁德商城网站建设太原网站建设谁家好
  • 品牌策划公司怎么样新乡网站优化公司价格
  • 做爰全过程免费的视频网站快速排名程序
  • 松江做营销网站博客营销案例