五大金刚-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 的数据类型设计灵活,可以组合使用以满足复杂的应用场景。

例如,可以使用哈希存储用户信息,再使用有序集合来维护用户的游戏得分排名。通过合理利用这些数据类型,可以构建高性能、低延迟的应用。

责任编辑:武晓燕 来源: 今日头条
相关推荐

2024-05-28 11:44:54

Redis数据结构数据库

2020-11-04 07:34:02

Redis数据类型

2019-12-18 14:41:07

Redis数据结构

2016-06-08 15:35:10

云计算

2021-10-28 18:14:28

应用安全安全管理网络安全

2015-10-20 09:42:36

医疗大数据应用

2021-03-03 00:01:30

Redis数据结双向链表

2024-11-04 06:20:00

Redis单线程

2010-07-14 17:03:52

编程语言

2023-08-27 21:22:02

Redis数据类

2019-06-04 10:40:07

2021-11-10 10:05:57

设施管理传感器数据

2019-08-12 15:40:26

Redis数据库数据类型

2010-06-28 15:26:21

UML关系类型

2011-05-06 08:41:33

UI设计应用程序iPad

2016-11-07 20:38:38

大数据应用教育行业

2023-07-04 08:41:08

Redis数据类型

2024-04-25 09:24:19

系统设计开发

2019-04-12 10:03:38

云端数据集成数字化

2022-10-31 13:26:12

机器学习人工智能算法
点赞
收藏

51CTO技术栈公众号