redis五种基本数据类型

redis五种基本数据类型:String,list,set,zset,hash
String数据类型,key 有一个最小的固定大小(512字节) 浪费内存


hash数据类型应用场景:1.放对象,2.放有相同大key类的数据
 /**
     * hash的数据类型
     */
    @Test
    void testHash() {
        HashOperations<String, Object, Object> hash = redisTemplate.opsForHash();
        hash.put("user", "age", 11);
        hash.put("user", "name", "啊哈");
        hash.put("user", "gender", "未知");
        //获取大key中一个数据
        Object o = hash.get("user", "name");
        System.out.println(o);
        //获取大key中所有数据
        Map<Object, Object> user = hash.entries("user");
        //遍历Map方法只有迭代器,
        Iterator<Object> iterator = user.keySet().iterator();
        while ((iterator.hasNext())) {
            //next() 迭代器中的元素
            System.out.println(user.get(iterator.next()));
        }
        //或者使用lambda表达式
        user.forEach((k, v) -> {
            System.out.println(v);
        });

    }
list数据类型应用场景:1.按顺序做一些功能 2.有限资源消费
 /**
     * list数据类型 队列 规则先进先出
     */
    @Test
    void testList() {
        ListOperations<String, Object> list = redisTemplate.opsForList();
        //左边放
        list.leftPush("reel","100-2");
        list.leftPush("reel","200-5");
        list.leftPush("reel","300-9");
        list.leftPush("reel","400-20");
        //左边拿,消费(拿去后redis中就没有了)
        Object left = list.leftPop("reel");
        //右边拿,消费(拿去后redis中就没有了)
        Object right = list.rightPop("reel");
        System.out.println(left);
        System.out.println(right);

    }
set数据类型 :无序且不可重复(即具有去重性) 应用场景:使用场景与Java中的set相同
/**
     * set数据类型 与Java中set一样
     * 无序且不可重复,使用场景与Java中的set相同
     */
    @Test
    void testSet() {
        SetOperations<String, Object> set = redisTemplate.opsForSet();
        set.add("set", "张三");
        set.add("set", "张三");
        set.add("set", "李四");
        set.add("set", "王五");
        Set<Object> set1 = set.members("set");
        for (Object o : set1) {
            System.out.println(o);
        }
    }

ZSet数据类型 可以对ZSet中的元素进行自动排序(通过元素的权重属性排序)
应用场景:排序
/**
     * ZSet数据类型
     * 可以对ZSet中的元素进行自动排序(通过元素的权重属性排序)
     */
    @Test
    void testZset() {
        ZSetOperations<String, Object> zSet = redisTemplate.opsForZSet();
//        zSet.add("news","ssssssss",90);
//        zSet.add("news","我绝的不行",8);
//        zSet.add("news","咕噜咕噜",9);
//        zSet.add("news","请问",9);
        //根据下标的范围获取数据,range 权重是从小到大
        Set<Object> news1 = zSet.range("news", 0, 3);
        for (Object o : news1) {
            System.out.println(o);
        }
        System.out.println("===========");
        //根据下标的范围获取数据,reverseRange 权重是从大到小
        Set<Object> news2 = zSet.reverseRange("news", 0, 3);
        for (Object o : news2) {
            System.out.println(o);
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值