玖叶教程网

前端编程开发入门

五大金刚-Redis的五种数据类型设计灵活,组合用满足复杂的应用

Redis 提供了多种内置的数据类型,每种类型都针对特定的使用场景进行了优化。

以下是 Redis 的五种主要数据类型及其用途:

String(字符串)

描述:最简单的数据类型,一个键对应一个值,值可以是字符串或数字。

使用场景:适合用于缓存简单的键值对数据,如会话信息、计数器等。

特殊操作:INCR、DECR(递增或递减数字型字符串的值)。

List(列表)

描述:一个键对应一个双向链表,可以从头部或尾部添加或弹出元素。

使用场景:适用于消息队列、最近最少使用(LRU)缓存、历史记录等。

特殊操作:LPUSH、RPUSH(在列表头部或尾部添加元素),LPOP、RPOP(从列表头部或尾部弹出元素)。

Set(集合)

描述:一个键对应一个无序的、不重复的字符串集合。

使用场景:适合用于存储唯一元素的集合,如标签、好友列表等。

特殊操作:

SADD(添加元素到集合),

SMEMBERS(获取集合的所有元素),

SINTER、SUNION、SDIFF(集合的交集、并集、差集)。




Hash(哈希)

描述:一个键对应一个字段-值对的映射,类似于字典或关联数组。

使用场景:适合用于存储结构化的数据,如用户信息、产品详情等

特殊操作:HSET、HGET(设置或获取哈希中的字段值),HGETALL(获取哈希中所有字段的值)。

Sorted Set(有序集合)

描述:类似于集合,但每个成员都关联了一个分数,用于排序。

使用场景:适合用于排行榜、评分系统、时间序列数据等。

特殊操作:

ZADD(添加元素到有序集合),

ZRANGE、ZREVRANGE(获取排序后的元素),

ZSCORE(获取元素的分数)。

/**------------------zSet相关操作--------------------------------*/
        // 添加元素,有序集合是按照元素的score值由小到大排列
        ceshiRedisUtilService.zAdd("ceshi-web-zadd", "test-ceshi-web-zadd1", 100);
        ceshiRedisUtilService.zAdd("ceshi-web-zadd", "test-ceshi-web-zadd2", 104);
        ceshiRedisUtilService.zAdd("ceshi-web-zadd", "test-ceshi-web-zadd3", 108);
        ceshiRedisUtilService.zAdd("ceshi-web-zadd", "test-ceshi-web-zadd4", 103);
        ceshiRedisUtilService.zAdd("ceshi-web-zadd", "test-ceshi-web-zadd5", 10);
        //zRange  获取集合的元素,value  从小到大排序
        Set<String> zRange = ceshiRedisUtilService.zRange("ceshi-web-zadd", 0, 4);
        for (String string : zRange) {
            System.out.println(string);
        }
        // zReverseRange 获取集合的元素,value 从大到小排序
        Set<String> zReverseRange = ceshiRedisUtilService.zReverseRange("ceshi-web-zadd", 0, 4);
        for (String string : zReverseRange) {
            System.out.println(string);
        }


---------------ceshiRedisUtilService.zRange---------------------------------
public Set<String> zRange(String key, long start, long end) {
        
        try {
           
            return redisTemplate.opsForZSet().
            range(key,start,end).stream().
            map(Object::toString).
            collect(Collectors.toCollection(LinkedHashSet::new));
        }catch (Exception e){
            logger.error("=======Exception When zRange",e);
        }
        return null;
    }

    public Set<String> zReverseRange(String key, long start, long end) {
        try {
            return redisTemplate.
			opsForZSet().
			reverseRange(key,start,end).
			stream().
			map(Object::toString).
			collect(Collectors.toCollection(LinkedHashSet::new));
        }catch (Exception e){
            logger.error("=======Exception When zReverseRange",e);
        }
        return null;
    }




Redis 的数据类型设计灵活,可以组合使用以满足复杂的应用场景。

例如,

可以使用哈希存储用户信息,

再使用有序集合来维护用户的游戏得分排名。

通过合理利用这些数据类型,可以构建高性能、低延迟的应用。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言