积分过期策略

策略:优先消耗上一年获取的积分,用户上一年获取的积分余额在本年度12月31号过期。例如:用户在2015年总共获取1000积分,在2016年12月31号这1000积分中还剩余100积分,那么这100积分就应该过期。

设计用户积分表:

available_points: 用户当前可用积分

current_year: 当前年份

points_current_year:今年获取的积分总数

points_last_year:去年获取的积分总数

获取积分:points_current_year=points_current_year+获取的积分,available_points=available_points+获取的积分

消耗积分:available_points=available_points-消耗的积分

积分过期:

  1. 如果available_points<=points_current_year,available_points不变,将points_current_year赋给points_last_year,将points_current_year置为0;
  2. 如果available_points>points_current_year,将points_current_year赋给available_points,将points_current_year赋给points_last_year,将points_current_year置为0;
时间: 2024-10-25 18:25:51

积分过期策略的相关文章

详解三种缓存过期策略LFU,FIFO,LRU(附带实现代码)

在学操作系统的时候,就会接触到缓存调度算法,缓存页面调度算法:先分配一定的页面空间,使用页面的时候首先去查询空间是否有该页面的缓存,如果有的话直接拿出来,如果没有的话先查询,如果页面空间没有满的时候,使用新页面的时候,就释放旧的页面空间,把新页面缓存起来,以便下次使用同样的页面的时候方便调用. 缓存调度流程图 缓存机制就是上面所说的那样,但是实现的过程以及淘汰旧页面的机制不同,所以会有不同缓存调度方法,就常见的就是FIFO,LRU,LFU缓存过期策略. 1.FIFO(First In First

Redis的过期策略

EXPIRE key seconds Available since 1.0.0. Time complexity: O(1) 为指定的KEY设置一个过期时间.当过了过期时间,这个KEY将自动被删除.如果使用DEL命令删除这个KEY或者使用SET命令或者GETSET命令重新设置这个KEY的值.过期时间将会被清除.使用PERSIST将这个KEY转换成持久不过期的KEY,也可以清除过期时间. 如果使用RENAME重新命名一个KEY,这个KEY关联的过期时间将转成新KEY的过期时间. 可以使用EXPI

redis过期策略

一.redis的key有六种过期策略 1.noeviction:一旦内存满则返回错误 2.allkeys-lru:对所有的key进行LRU 3.volatile-lru:只对设置了过期的key进行LRU(默认的方式) 4.allkeys-random:随机剔除一个key 5.volatile-random:对设置过期的key进行随机剔除一个 6.volatile-ttl:删除即将过期的key 根据官网的描述,redis使用的LRU并非真正的LRU算法,精确度并不高.redis3.0版本的LRU会

Redis系列(三)--过期策略

制定Redis过期策略,是整个Redis缓存策略的关键之一,因为内存来说,公司不可能无限大,所以就要对key进行一系列的管控. 文章结构:(1)理解Redis过期设置API(命令与Java描述版本):(2)理解Redis内部的过期策略:(3)对开发需求而言,Redis过期策略的设计实现经验. 本系列文章: (1)Redis系列(一)–安装.helloworld以及读懂配置文件 (2)Redis系列(二)–缓存设计(整表缓存以及排行榜缓存方案实现) 一.理解Redis过期设置API(命令与Java

Redis Key 过期策略

redis 官方提供的 conf https://raw.github.com/antirez/redis/2.2/redis.conf 中6中过期策略的具体方式.redis 中的默认的过期策略是volatile-lru .设置方式 config set maxmemory-policy volatile-lru maxmemory-policy 六种方式 volatile-lru:只对设置了过期时间的key进行LRU(默认值) allkeys-lru : 删除lru算法的key volatil

.NET4缓存过期策略摘录

以下是网上搜索的资料,仅供参考: 资料一:ASP.NET缓存中Cache过期的三种策略(转自51CTO) 我们在页面上添加三个按钮并双击按钮创建事件处理方法,三个按钮使用不同的过期策略添加ASP.NET缓存. <asp:Button ID="btn_InsertNoExpirationCache" runat="server" Text="插入永不过期缓存" OnClick="btn_InsertNoExpirationCache

第九章 Redis过期策略

注:本文主要参考自<Redis设计与实现> 1.设置过期时间 expire key time(以秒为单位)--这是最常用的方式 setex(String key, int seconds, String value)--字符串独有的方式 具体的使用方式:查看"java企业项目开发实践"的XXXXXXXXXXXXXXXXXXXXXX 注意: 除了字符串自己独有设置过期时间的方法外,其他方法都需要依靠expire方法来设置时间 如果没有设置时间,那缓存就是永不过期 如果设置了过

Redis学习笔记-----Redis数据过期策略详解

本文对Redis的过期机制简单的讲解一下 讲解之前我们先抛出一个问题,我们知道很多时候服务器经常会用到redis作为缓存,有很多数据都是临时缓存一下,可能用过之后很久都不会再用到了(比如暂存session,又或者只存放日行情股票数据)那么就会出现一下几个问题了 Redis会自己回收清理不用的数据吗? 如果能,那如何配置? 如果不能,如何防止数据累加后大量占用存储空间的问题? 之前一直接触Redis不是很深入,最近项目当中遇到一个需求场景,需要清空一些存放在Redis的数据,主要是通过一些时间进行

redis过期策略设置

中6中过期策略的具体方式. redis 中的默认的过期策略是volatile-lru .设置方式 可以通过命令直接设置 config set maxmemory-policy volatile-lru maxmemory-policy 六种方式 volatile-lru:只对设置了过期时间的key进行LRU(默认值) allkeys-lru : 删除lru算法的key volatile-random:随机删除即将过期key allkeys-random:随机删除 volatile-ttl : 删