redisTemplate的有序集合(zset)实例

来源:互联网 发布:淘宝网点旺旺没反应 编辑:程序博客网 时间:2024/06/06 03:55
//场景是这样的,现在需要记录用户最近浏览的职位,按浏览的时间倒序排序,只记录最近浏览的5条
//redisTemplate怎么用就不多说了
    @Resource(name = "jdkRedisTemplate")    private RedisTemplate<String, Long> redisTempalte;    @Override    public void addRecentBrowsingPosition(long userId, long positionId) {        String key = RedisKeyGenerator.genRecentBrowsingPositionsKey(String.valueOf(userId));        // 获取已缓存的最近浏览的职位        ZSetOperations<String, Long> zSetOperations = redisTempalte.opsForZSet();                  //zset内部是按分数来排序的,这里用当前时间做分数        zSetOperations.add(key, positionId, System.currentTimeMillis());                  //环形结构--4,-3,-2,-1,0,1,2,3,4        zSetOperations.removeRange(key, 0, -6);    }    @Override    public List<Long> getRecentBrowsingPositionIds(long userId) {        if (userId <= 0) {            return Collections.emptyList();        }        // 获取用户最近浏览的职位id        String key = RedisKeyGenerator.genRecentBrowsingPositionsKey(String.valueOf(userId));        Set<Long> positionIds = redisTempalte.opsForZSet().reverseRange(key, 0, 4);        return new ArrayList<>(positionIds);    }

0 0
原创粉丝点击