Redis-16.在Java中操作Redis-Spring Data Redis使用方式-操作有序集合类型的数据

一. 操作有序集合类型的数据

package com.sky.test;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.*;

import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;

@SpringBootTest
public class SpringDataRedisTest {
    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void testRedisTemplate() {
        System.out.println(redisTemplate);  // 首先输出redisTemplate对象看是否为空
        ValueOperations valueOperations = redisTemplate.opsForValue();  // redis当中的字符串类型数据操作对象
        HashOperations hashOperations = redisTemplate.opsForHash();     // redis当中的哈希类型数据操作对象
        ListOperations listOperations = redisTemplate.opsForList();     // redis当中的列表类型数据操作对象
        SetOperations setOperations = redisTemplate.opsForSet();        // redis当中的集合类型数据操作对象
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();     // redis当中的有序集合类型数据操作对象
    }

    /*
        操作字符串类型的数据
     */
    @Test
    public void testString() {
        // set get setex setnx
        redisTemplate.opsForValue().set("city","北京");   // set
        String city = (String) redisTemplate.opsForValue().get("city");// get
        System.out.println(city);
        redisTemplate.opsForValue().set("code","1234",3, TimeUnit.MINUTES);     // setex
        redisTemplate.opsForValue().setIfAbsent("lock","1");   // setnx
        redisTemplate.opsForValue().setIfAbsent("lock","2");
    }

    /*
        操作哈希类型的数据
     */
    @Test
    public void testHash() {
        // hset hget hdel hkeys hvals
        HashOperations hashOperations = redisTemplate.opsForHash();
        hashOperations.put("100","name","Rose");    // put(Object key,Object hashKey,Object value)
        hashOperations.put("100","age","22");   // 对应hset
        String name = (String) hashOperations.get("100", "name");   // 对应hget
        System.out.println(name);

        Set keys = hashOperations.keys("100");      // 对应hkeys
        System.out.println(keys);

        List values = hashOperations.values("100");     // 对应hvals
        System.out.println(values);

        hashOperations.delete("100","name");  // 对应hdel
    }

    /*
        操作列表类型的数据
     */
    @Test
    public void testList() {
        // LPUSH, lrange, rpop,llen
        ListOperations listOperations = redisTemplate.opsForList();
        // leftPushAll(Object key, Object ...values):一次往列表中插入多个元素
        listOperations.leftPushAll("mylist","a","b","c");

        // leftPush(Object key, Object value):往列表中插入单个元素
        listOperations.leftPush("mylist","d");

        // range(Object key,Long start, Long end):获取列表指定范围内的元素,并构成一个列表
        List mylist = listOperations.range("mylist", 0, -1);
        System.out.println(mylist);

        // rightPop(Object key):移除并获取列表的最后一个元素
        String rightPop = (String) listOperations.rightPop("mylist");
        System.out.println(rightPop);

        // size(Object key):获取列表长度
        Long length = listOperations.size("mylist");
        System.out.println(length);
    }

    /*
        操作集合类型的数据
     */
    @Test
    public void testSet() {
        // sadd smembers scard sinter sunion srem
        SetOperations setOperations = redisTemplate.opsForSet();
        // add(Object key Object... value)
        setOperations.add("set1","a","b","c","d");
        setOperations.add("set2","a","b","x","y");

        // members(Object key)
        Set set1 = setOperations.members("set1");
        System.out.println(set1);

        // size(Object key)
        Long size = setOperations.size("set1");
        System.out.println(size);

        // intersect(Object key,Object otherKey)
        Set intersect = setOperations.intersect("set1", "set2");
        System.out.println(intersect);

        // union(Object key,Object otherKey)
        Set union = setOperations.union("set1", "set2");
        System.out.println(union);

        // remove(Object key,Object... value)
        setOperations.remove("set1","a","b");

    }

    /*
        操作有序集合的数据
     */
    @Test
    public void testZSet(){
        // zadd zrange zincrby zrem
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
        // add(Object key, Object value, double score)
        zSetOperations.add("zset1","a",10);
        zSetOperations.add("zset1","b",11);
        zSetOperations.add("zset1","c",13);

        // range(Object key,long start,long end)
        Set zset1 = zSetOperations.range("zset1", 0, -1);
        System.out.println(zset1);

        // incrementScore(Object key, Object value, double incrementScore)
        zSetOperations.incrementScore("zset1","a",4);

        // remove(Object key, Object... value)
        zSetOperations.remove("zset1","a","b");
    }


}

1.  add(Object key, Object value, double score)        向集合中添加数据,添加其key,value以及score。对应于zadd。

2.  range(Object key,long start,long end)        获取集合中的数据,对应于range。 

 3.  incrementScore(Object key,Object value, double incrementScore)        给集合中指定的元素加上增量,对应于zincrby。

4.remove(Object key, Object... value)        移除集合中的元素,对应于zrem

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值