redis统计各用户版本记录

思路:

        通过每次用户登录去使用redi统计用户useid和版本version-->目的是为啦获取之前存入redis中的版本判断用户之前有没有存版本没有则新增,有且版本升级则更新用户版本,版本相同则直接返回。

// 定义Redis Key
String userVersionKey = "user:version";
// 1. 使用 Map 存储用户-版本映射
RMap userVersionMap = redissonClient.getMap(userVersionKey);
// 2. 获取用户旧版本
String oldVersion = userVersionMap.get(userId.toString());
if (oldVersion != null && oldVersion.equals(version)) {
    return;
}

        使用redis中RScoredSortedSet来实现计数

// 定义各版本Redis Key 
String versionCounterKey = "version:counter";
// 3. 更新版本计数器
RScoredSortedSet versionSet = redissonClient.getScoredSortedSet(versionCounterKey);
if (oldVersion != null && !oldVersion.equals(version)) {
    // 旧版本计数-1
    versionSet.addScore(oldVersion, -1);
}
// 4. 更新用户版本
userVersionMap.put(userId.toString(), version);
// 新版本计数+1
versionSet.addScore(version, 1);

统计用户版本完成

获取版本redis数据

public Map getVersionStats() {

    String versionCounterKey = "version:counter";
    RScoredSortedSet versionSet = redissonClient.getScoredSortedSet(versionCounterKey);

    // 获取所有版本号
    Collection versions = versionSet.readAll();

    return versions.stream()
            .collect(Collectors.toMap(
                    version -> version,
                    versionSet::getScore
            ));
}

你可能感兴趣的:(redis,java,数据库)